# Buggy code
def get_edge_label(edge):
    node_service = monkey_island.cc.services.node.NodeService
    from_id = edge["from"]
    to_id = edge["to"]

    from_label = Monkey.get_label_by_id(from_id)

    if to_id == ObjectId("000000000000000000000000"):
        to_label = "MonkeyIsland"
    else:
        if Monkey.is_monkey(to_id):
            to_label = Monkey.get_label_by_id(to_id)
        else:
            to_label = node_service.get_node_label(node_service.get_node_by_id(to_id))

    return "%s %s %s" % (from_label, RIGHT_ARROW, to_label)


# Traceback (OSError)
2020-01-17 10:14:45,982 - iostream.py:1518 - _do_ssl_handshake() - WARNING - SSL Error on 1504 ('1.1.1.2', 4469): [SSL: NO_SHARED_CIPHER] no shared cipher (_ssl.c:1076)
2020-01-17 10:14:46,055 - iostream.py:1518 - _do_ssl_handshake() - WARNING - SSL Error on 1500 ('1.1.1.2', 4470): [SSL: VERSION_TOO_LOW] version too low (_ssl.c:1076)
2020-01-17 10:14:46,136 - iostream.py:744 - _handle_events() - ERROR - Uncaught exception, closing connection.
Traceback (most recent call last):
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\site-packages\tornado\iostream.py", line 709, in _handle_events
self._handle_read()
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\site-packages\tornado\iostream.py", line 1581, in _handle_read
self._do_ssl_handshake()
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\site-packages\tornado\iostream.py", line 1501, in _do_ssl_handshake
self.socket.do_handshake()
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 1139, in do_handshake
self._sslobj.do_handshake()
OSError: [Errno 0] Error
2020-01-17 10:14:46,163 - base_events.py:1604 - default_exception_handler() - ERROR - Exception in callback None()
handle: <Handle cancelled>
Traceback (most recent call last):
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\asyncio\events.py", line 88, in _run
self._context.run(self._callback, *self._args)
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\site-packages\tornado\platform\asyncio.py", line 122, in _handle_events
handler_func(fileobj, events)
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\site-packages\tornado\stack_context.py", line 300, in null_wrapper
return fn(*args, **kwargs)
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\site-packages\tornado\iostream.py", line 709, in _handle_events
self._handle_read()
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\site-packages\tornado\iostream.py", line 1581, in _handle_read
self._do_ssl_handshake()
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\site-packages\tornado\iostream.py", line 1501, in _do_ssl_handshake
self.socket.do_handshake()
File "C:\Users\Vakaris\AppData\Local\Programs\Python\Python37\lib\ssl.py", line 1139, in do_handshake
self._sslobj.do_handshake()
OSError: [Errno 0] Error

# Fixed code
def get_edge_label(edge):
    node_service = monkey_island.cc.services.node.NodeService
    from_id = edge["from"]
    to_id = edge["to"]

    try:
        from_label = Monkey.get_label_by_id(from_id)
    except MonkeyNotFoundError:
        from_label = node_service.get_node_by_id(from_id)["domain_name"]

    if to_id == ObjectId("000000000000000000000000"):
        to_label = "MonkeyIsland"
    else:
        if Monkey.is_monkey(to_id):
            to_label = Monkey.get_label_by_id(to_id)
        else:
            to_label = node_service.get_node_label(node_service.get_node_by_id(to_id))

    return "%s %s %s" % (from_label, RIGHT_ARROW, to_label)