def check_ri_without_rt(g): """routing-instance that doesn't have any route-target (that crashes schema) """ return g.V().hasLabel("routing_instance") \ .not_(__.has('fq_name', within(["default-domain", "default-project", "ip-fabric", "__default__"], ["default-domain", "default-project", "__link_local__", "__link_local__"]))) \ .not_(__.out().hasLabel("route_target"))
def check_duplicate_public_ips(g): """duplicate public ips """ r = g.V().hasLabel(within('floating_ip', 'instance_ip')) \ .property('ip_address', __.values('floating_ip_address', 'instance_ip_address')).group().by('ip_address').unfold() \ .filter(lambda: "it.get().value.size() > 1 && it.get().value.findAll{it.label.value == 'floating_ip'} != []").toList() if len(r) > 0: printo('Found %d %s:' % (len(r), check_duplicate_public_ips.__doc__.strip())) return r
def check_unused_rt(g): """unused route-target """ return g.V().hasLabel("route_target").not_( __.in_().hasLabel(within("routing_instance", "logical_router")) )
def test_edges(self) -> None: db_name = Fixtures.next_database() database_uri = f'database://{db_name}' cluster1_uri = f'{db_name}://acluster' cluster2_uri = f'{db_name}://bcluster' self.assertNotEqual(cluster1_uri, cluster2_uri) cluster_vertex_type = VertexType.construct_type( label=VertexTypes.Cluster.value.label, properties=tuple([ Property(name='aproperty', type=GremlinType.String), Property(name='b', type=GremlinType.String), Property(name='c', type=GremlinType.String) ])) self._upsert(label=VertexTypes.Database, key=database_uri, name='test') self._upsert(label=cluster_vertex_type, key=cluster1_uri, aproperty='one', b='b') self._upsert(label=cluster_vertex_type, key=cluster2_uri, aproperty='two', c='c') cluster_edge_type = EdgeType(label=EdgeTypes.Cluster.value.label, properties=tuple([ Property(name='created', type=GremlinType.Date, required=True), Property(name='aproperty', type=GremlinType.String), Property(name='b', type=GremlinType.String), Property(name='c', type=GremlinType.String) ])) self._link(vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=VertexTypes.Cluster, vertex2_key=cluster1_uri, edge_label=cluster_edge_type, aproperty='won', b='bee') self._link(vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=VertexTypes.Cluster, vertex2_key=cluster2_uri, edge_label=cluster_edge_type, aproperty='too', c='sea') # get the one e1 = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=None, vertex2_key=None, edge_label=None, aproperty='won').id().toList() self.assertEqual(len(e1), 1) # get the other e2 = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=None, vertex2_key=None, edge_label=None, aproperty='too').id().toList() self.assertEqual(len(e2), 1) self.assertNotEqual(e1[0], e2[0]) # get both edges e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=None, vertex2_key=None, edge_label=EdgeTypes.Cluster).id().toList() self.assertTrue(e == e1 + e2 or e == e2 + e1) # get both edges e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=None, vertex2_key=None, edge_label=None, aproperty=within('won', 'too')).id().toList() self.assertTrue(e == e1 + e2 or e == e2 + e1) # get the one e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=VertexTypes.Cluster, vertex2_key=cluster1_uri, edge_label=None).id().toList() self.assertEqual(e, e1) # get the other e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=VertexTypes.Cluster, vertex2_key=cluster2_uri, edge_label=None).id().toList() self.assertEqual(e, e2) # get the one e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=None, vertex2_key=None, vertex2_properties=dict(aproperty='one'), edge_label=None).id().toList() self.assertEqual(e, e1) # get the other e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=None, vertex2_key=None, vertex2_properties=dict(aproperty='two'), edge_label=None).id().toList() self.assertEqual(e, e2) # get the one e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=None, vertex2_key=None, vertex2_properties=dict(c=None), edge_label=None).id().toList() self.assertEqual(e, e1) # get the other e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=None, vertex2_key=None, vertex2_properties=dict(b=None), edge_label=None).id().toList() self.assertEqual(e, e2) # get none e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=None, vertex2_key=None, edge_label=EdgeTypes.Schema).id().toList() self.assertEqual(len(e), 0) # get none e = _edges_from(g=self.get_proxy().g, vertex1_label=VertexTypes.Database, vertex1_key=database_uri, vertex2_label=VertexTypes.Schema, vertex2_key=None, edge_label=None).id().toList() self.assertEqual(len(e), 0)