Fix client server rpc connection (#16)

* Trying to get connection from sqkclient to sqkserver

* Looks like connection from client to sqkserver may be working...

* Got client server rpc request to work
This commit is contained in:
Jonathan Zernik 2020-06-03 15:00:57 -07:00 committed by GitHub
parent b78e868f53
commit c032b5be0f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 91 additions and 48 deletions

View file

@ -6,6 +6,9 @@ RUN apt-get update && apt-get install -y \
curl \
git
# install nc
RUN apt-get update && apt-get install -y netcat
COPY requirements.txt /
RUN pip3 install --upgrade pip

View file

@ -87,6 +87,11 @@ runsqueaknodeclient \
"--log-level"="$DEBUG" \
init-db
echo "Checking if the server port is open"
nc -zvw3 blockchain 18556
nc -zvw3 sqkserver 50052
echo "Done checking remote port"
exec runsqueaknodeclient \
"--config"="config.ini" \
"--log-level"="$DEBUG" \

View file

@ -78,6 +78,7 @@ export REQUESTS_CA_BUNDLE=/etc/ssl/certs/ca-certificates.crt
# Generate the config file.
chmod +x config.ini.sh
./config.ini.sh $NETWORK $LND_HOST $LND_PORT $BTCD_HOST $BTCD_RPC_PORT $RPCUSER $RPCPASS $SQK_HOST $SQK_PORT > config.ini
echo "config.ini:"
cat config.ini
# # Initialize the client database.
@ -86,7 +87,14 @@ cat config.ini
# "--log-level"="$DEBUG" \
# init-db
echo "$DEBUG:"
echo $DEBUG
echo "Starting to run the python server here...."
exec runsqueaknodeserver \
"--config"="config.ini" \
"--log-level"="$DEBUG" \
run-server
# exec ls

View file

@ -99,9 +99,9 @@ services:
- "btcd:blockchain"
entrypoint: ["./start-lnd.sh"]
lnd_server:
lnd_sqkserver:
image: lnd
container_name: lnd_server
container_name: lnd_sqkserver
build:
context: ../
dockerfile: docker/lnd/Dockerfile
@ -113,11 +113,34 @@ services:
- DEBUG
volumes:
- shared_test:/rpc
- lnd_dir_server:/root/.lnd
- lnd_dir_sqkserver:/root/.lnd
links:
- "btcd:blockchain"
entrypoint: ["./start-lnd.sh"]
sqkserver:
image: sqkserver
container_name: sqkserver
build:
context: ../
dockerfile: docker/sqkserver/Dockerfile
environment:
- RPCUSER
- RPCPASS
- NETWORK
- CHAIN
- DEBUG
- HEADLESS
volumes:
- shared_test:/rpc
- lnd_dir_sqkserver:/root/.lnd
links:
- "btcd:blockchain"
- "lnd_sqkserver:lnd"
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
entrypoint: ["./start-sqkserver.sh"]
sqkclient_alice:
image: sqkclient
container_name: sqkclient_alice
@ -137,6 +160,7 @@ services:
links:
- "btcd:blockchain"
- "lnd_alice:lnd"
- "sqkserver:sqkserver"
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
entrypoint: ["./start-sqkclient.sh"]
@ -160,6 +184,7 @@ services:
links:
- "btcd:blockchain"
- "lnd_bob:lnd"
- "sqkserver:sqkserver"
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
entrypoint: ["./start-sqkclient.sh"]
@ -183,33 +208,11 @@ services:
links:
- "btcd:blockchain"
- "lnd_carol:lnd"
- "sqkserver:sqkserver"
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
entrypoint: ["./start-sqkclient.sh"]
sqkserver:
image: sqkserver
container_name: sqkserver
build:
context: ../
dockerfile: docker/sqkserver/Dockerfile
environment:
- RPCUSER
- RPCPASS
- NETWORK
- CHAIN
- DEBUG
- HEADLESS
volumes:
- shared_test:/rpc
- lnd_dir_server:/root/.lnd
links:
- "btcd:blockchain"
- "lnd_alice:lnd"
sysctls:
- net.ipv6.conf.all.disable_ipv6=0
entrypoint: ["./start-sqkserver.sh"]
test:
image: test
container_name: test
@ -240,5 +243,5 @@ volumes:
driver: local
lnd_dir_carol:
driver: local
lnd_dir_server:
lnd_dir_sqkserver:
driver: local

View file

@ -37,7 +37,7 @@ class SqueakNodeClient(object):
# Event is set when the client stops
self.stopped = threading.Event()
self.uploader = Uploader(self.hub_store, self.squeak_store, self.address)
self.rpc_client = RPCClient('fake_host', 1234)
self.rpc_client = RPCClient('sqkserver', 50051)
def start(self):
# TODO: start the uploader and the downloader.

View file

@ -1,5 +1,10 @@
import logging
import grpc
from squeaknode.common.rpc import squeak_server_pb2
from squeaknode.common.rpc import squeak_server_pb2_grpc
from squeak.core.signing import CSigningKey
from squeak.core.signing import CSqueakAddress
@ -30,3 +35,12 @@ class RPCClient(object):
def upload_squeak(self, squeak):
squeak_hash = squeak.GetHash()
logger.info("Upload the squeak here.")
# Make the rpc request to the server.
#channel = grpc.insecure_channel('localhost:50051')
# channel = grpc.insecure_channel('{}:{}'.format(self.host, self.port))
channel = grpc.insecure_channel('sqkserver:50052')
stub = squeak_server_pb2_grpc.SqueakServerStub(channel)
response = stub.SayHello(squeak_server_pb2.HelloRequest(name='rpc_client'))
print("Greeter client received: " + response.message)
logger.info("Greeter client received: " + response.message)

View file

@ -40,9 +40,13 @@ class SqueakServerServicer(squeak_server_pb2_grpc.SqueakServerServicer):
# )
def serve(self):
print('Calling serve...', flush=True)
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
squeak_server_pb2_grpc.add_SqueakServicer_to_server(
squeak_server_pb2_grpc.add_SqueakServerServicer_to_server(
self, server)
server.add_insecure_port('0.0.0.0:50051')
print("server.add_insecure_port...", flush=True)
server.add_insecure_port('0.0.0.0:50052')
print("Starting SqueakServerServicer rpc server...", flush=True)
server.start()
print("Started SqueakServerServicer rpc server...", flush=True)
server.wait_for_termination()

View file

@ -31,14 +31,16 @@ def load_lightning_client(config) -> LightningClient:
def start_rpc_server(handler):
print('Calling start_rpc_server...', flush=True)
server = SqueakServerServicer(handler)
thread = threading.Thread(
target=server.serve,
args=(),
)
thread.daemon = True
thread.start()
return server, thread
# thread = threading.Thread(
# target=server.serve,
# args=(),
# )
# thread.daemon = True
# thread.start()
# return server, thread
server.serve()
def load_handler(lightning_client):
@ -83,6 +85,7 @@ def parse_args():
def main():
print("Running main() in server...", flush=True)
logging.basicConfig(level=logging.ERROR)
args = parse_args()
@ -106,25 +109,28 @@ def main():
def run_server(config):
print('network:', config['DEFAULT']['network'])
print('network:', config['DEFAULT']['network'], flush=True)
SelectParams(config['DEFAULT']['network'])
lightning_client = load_lightning_client(config)
print('starting lightning client here...', flush=True)
# lightning_client = load_lightning_client(config)
# db_factory = load_db_factory(config)
# node = load_client(blockchain_client, lightning_client, signing_key, db_factory)
handler = load_handler(lightning_client)
handler = load_handler(None)
# start rpc server
rpc_server, rpc_server_thread = start_rpc_server(handler)
start_rpc_server(handler)
# rpc_server, rpc_server_thread = start_rpc_server(handler)
# print("rpc server started...", flush=True)
signal.signal(signal.SIGTERM, sigterm_handler)
# signal.signal(signal.SIGTERM, sigterm_handler)
print("Starting server...")
try:
while True:
time.sleep(1)
finally:
print("Shutting down...")
# print("sleeping....", flush=True)
# try:
# while True:
# time.sleep(1)
# finally:
# print("Shutting down...", flush=True)
if __name__ == '__main__':