diff --git a/resource/readers/resource_reader_jgf.cpp b/resource/readers/resource_reader_jgf.cpp index f3ad63fb3..deb6b6f78 100644 --- a/resource/readers/resource_reader_jgf.cpp +++ b/resource/readers/resource_reader_jgf.cpp @@ -990,7 +990,7 @@ int resource_reader_jgf_t::unpack_edge (json_t *element, json_t *metadata = NULL; const char *src = NULL; const char *tgt = NULL; - const char *subsys = NULL; + const char *subsys = "containment"; if ((json_unpack (element, "{ s:s s:s }", "source", &src, "target", &tgt)) < 0) { errno = EINVAL; @@ -1007,17 +1007,10 @@ int resource_reader_jgf_t::unpack_edge (json_t *element, m_err_msg += source + std::string (" -> ") + target + ".\n"; goto done; } - if ((metadata = json_object_get (element, "metadata")) == NULL) { - errno = EINVAL; - m_err_msg += __FUNCTION__; - m_err_msg += ": metadata key not found in an edge for "; - m_err_msg += source + std::string (" -> ") + target + ".\n"; - goto done; - } - if ((json_unpack (metadata, "{ s:s }", "subsystem", &subsys)) < 0) { + if ((json_unpack (element, "{ s?{ s?s } }", "metadata", "subsystem", &subsys)) < 0) { errno = EINVAL; m_err_msg += __FUNCTION__; - m_err_msg += ": subsystem key not found in edge metadata.\n"; + m_err_msg += ": could not unpack edge metadata.\n"; goto done; } subsystem = subsys; diff --git a/src/python/fluxion/jsongraph/objects/graph.py b/src/python/fluxion/jsongraph/objects/graph.py index 85292ccf7..abed809e8 100644 --- a/src/python/fluxion/jsongraph/objects/graph.py +++ b/src/python/fluxion/jsongraph/objects/graph.py @@ -79,7 +79,7 @@ def add_edge(self, edge, force_direction=False):#TODO check existence of node id if isinstance(edge, Edge): if self._directed: if edge.is_directed() == None: - edge.is_directed(True) + edge.set_directed(True) if not edge.is_directed() and not force_direction: ValueError("Adding undirected edge to directed graph") if not edge.is_directed() and force_direction: diff --git a/src/python/fluxion/resourcegraph/V1.py b/src/python/fluxion/resourcegraph/V1.py index 1b6b571e2..913f5ce7a 100644 --- a/src/python/fluxion/resourcegraph/V1.py +++ b/src/python/fluxion/resourcegraph/V1.py @@ -90,8 +90,6 @@ def __init__(self, parentId, vtxId): super().__init__( parentId, vtxId, - directed=True, - metadata={"subsystem": "containment"}, ) @@ -105,7 +103,8 @@ def __init__(self, rv1): rv1 -- RV1 Dictorary that conforms to Flux RFC 20: Resource Set Specification Version 1 """ - super().__init__() + super().__init__(directed=False) + # graph *is* directed, however, suppress unnecessary `"directed": true` fields self._uniqId = 0 self._rv1NoSched = rv1 self._encode() diff --git a/t/python/t10001-resourcegraph.py b/t/python/t10001-resourcegraph.py index bd15648c6..b10fc0f14 100755 --- a/t/python/t10001-resourcegraph.py +++ b/t/python/t10001-resourcegraph.py @@ -68,10 +68,8 @@ def _check_metadata(self, metadata): def test_basic(self): graph = FluxionResourceGraphV1(RV1) - self.assertTrue(graph.is_directed()) j = graph.to_JSON() json.dumps(j) # make sure it doesn't throw an error - self.assertTrue(j["graph"]["directed"]) self.assertEqual(len(j["graph"]["nodes"]), len(graph.get_nodes())) self.assertEqual(len(j["graph"]["edges"]), len(graph.get_edges())) for node in graph.get_nodes(): @@ -79,10 +77,8 @@ def test_basic(self): def test_basic_2(self): graph = FluxionResourceGraphV1(RV1_2) - self.assertTrue(graph.is_directed()) j = graph.to_JSON() json.dumps(j) - self.assertTrue(j["graph"]["directed"]) self.assertEqual(len(j["graph"]["nodes"]), len(graph.get_nodes())) self.assertEqual(len(j["graph"]["edges"]), len(graph.get_edges())) for node in graph.get_nodes(): @@ -90,9 +86,7 @@ def test_basic_2(self): def test_basic_3(self): graph = FluxionResourceGraphV1(RV1_3) - self.assertTrue(graph.is_directed()) j = graph.to_JSON() - self.assertTrue(j["graph"]["directed"]) self.assertEqual(len(j["graph"]["nodes"]), len(graph.get_nodes())) self.assertEqual(len(j["graph"]["edges"]), len(graph.get_edges())) for node in graph.get_nodes():