ThousandMileEye / eye

Protocol driver for monitoring protocols
Apache License 2.0
0 stars 1 forks source link

CLI コマンド実行時に `socket.error` が発生する #41

Closed eternalharvest closed 6 years ago

eternalharvest commented 6 years ago

Abstract

ソケットエラーによって CLI コマンドが正常に実行できない。

Pre-requisite

Actual Result

(eye) takuya@localhost:~/work/eye$ eye show interfaces
Traceback (most recent call last):
  File "/home/takuya/work/eye/bin/eye", line 11, in <module>
    load_entry_point('eyed', 'console_scripts', 'eye')()
  File "/home/takuya/work/eye/eyed/cli.py", line 636, in start_cli
    cmd(obj = {})
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/click-6.7-py2.7.egg/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/click-6.7-py2.7.egg/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/click-6.7-py2.7.egg/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/click-6.7-py2.7.egg/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/click-6.7-py2.7.egg/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/click-6.7-py2.7.egg/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/click-6.7-py2.7.egg/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/takuya/work/eye/eyed/cli.py", line 269, in show_interfaces
    client = RPCClient(host, port)
  File "/home/takuya/work/eye/eyed/client/rpc/client.py", line 14, in __init__
    self.connection = rpyc.connect(host, port)
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/rpyc-3.4.4-py2.7.egg/rpyc/utils/factory.py", line 90, in connect
    s = SocketStream.connect(host, port, ipv6 = ipv6, keepalive = keepalive)
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/rpyc-3.4.4-py2.7.egg/rpyc/core/stream.py", line 150, in connect
    return cls(cls._connect(host, port, **kwargs))
  File "/home/takuya/work/eye/local/lib/python2.7/site-packages/rpyc-3.4.4-py2.7.egg/rpyc/core/stream.py", line 108, in _connect
    s.connect(sockaddr)
  File "/usr/lib/python2.7/socket.py", line 228, in meth
    return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused

Expected result

NaoyaSawada commented 6 years ago

回答

コマンドラインは、遠隔のサーバーに対してコマンドを実行するので、サーバが立っていないと思われる。eyed コマンドを事前に実行する必要がる。

今後の対応

使い方がまったくわからないと思うので、0.6.0リリースでドキュメント類をgithub page にあげて見やすくする。

eternalharvest commented 6 years ago

@NaoyaSawada

eyed を起動したら無事動作しました。 明らかなエラーは例外のスタックトレースだけでなくメッセージを表示してくれると親切かなと思います。 問題は解決したので、クローズしようと思います。