Merge pull request #19 from atengler/fix/function-graph-data

Improved parsing of external_host in graph_data function
diff --git a/_modules/reclass.py b/_modules/reclass.py
index 732e4ef..305ac2c 100644
--- a/_modules/reclass.py
+++ b/_modules/reclass.py
@@ -267,17 +267,25 @@
 def _interpolate_graph_data(graph_data, **kwargs):
     new_nodes = []
     for node in graph_data:
+        if not node.get('relations', []):
+            node['relations'] = []
         for relation in node.get('relations', []):
             if relation.get('host_from_target', None):
                 host = _guess_host_from_target(relation.pop('host_from_target'))
                 relation['host'] = host
             if relation.get('host_external', None):
-                parsed_host_external = urlparse(relation.pop('host_external'))
-                service = parsed_host_external.netloc
+                parsed_host_external = [urlparse(item).netloc
+                                        for item
+                                        in relation.get('host_external', '').split(' ')
+                                        if urlparse(item).netloc]
+                service = parsed_host_external[0] if parsed_host_external else ''
                 host = relation.get('service', '')
                 relation['host'] = host
+                del relation['host_external']
                 relation['service'] = service
-                if host not in [n.get('host', '') for n in graph_data + new_nodes]:
+                host_list = [n.get('host', '') for n in graph_data + new_nodes]
+                service_list = [n.get('service', '') for n in graph_data + new_nodes if host in n.get('host', '')]
+                if host not in host_list or (host in host_list and service not in service_list):
                     new_node = {
                         'host': host,
                         'service': service,