def test_transac_container_properties(self):
        SessionService.open_session("test_transac_container_properties")
        container = Container(name="test_transac_container_properties",
                              gate_uri="ssh://my_host/docker/test_transac_container_properties",
                              primary_admin_gate_name="container name space (pid)", company="Docker",
                              product="Docker", c_type="container")
        container.save()
        SessionService.commit()
        container2 = ContainerService.find_container(cid=container.id)
        self.assertEqual(container2.properties.__len__(), 0)

        container.add_property(('int_prop', 10), sync=False)
        container.add_property(('long_prop', 10000000), sync=False)
        container.add_property(('double_prop', 3.1414), sync=False)
        container.add_property(('boolean_prop', True), sync=False)
        container.add_property(('string_prop', "value"), sync=False)
        datacenter = {"dc": "Sagittarius", "gpsLng": 2.251088, "address": "2 rue Baudin", "gpsLat": 48.895345,
                      "town": "Courbevoie", "country": "France"}
        container.add_property(('map_prop_datacenter', datacenter), sync=False)
        container.add_property(('array_prop', [1, 2, 3, 4, 5]), sync=False)
        self.assertEqual(container.properties.__len__(), 0)
        container.save()
        SessionService.commit()
        container2 = ContainerService.find_container(cid=container.id)
        self.assertTrue('boolean_prop' in container2.properties)
        self.assertTrue('double_prop' in container2.properties)
        self.assertTrue('int_prop' in container2.properties)
        self.assertTrue('long_prop' in container2.properties)
        self.assertTrue('map_prop_datacenter' in container2.properties)
        self.assertTrue('string_prop' in container2.properties)
        self.assertTrue('array_prop' in container2.properties)

        container.remove()
        SessionService.commit()
        SessionService.close_session()
 def test_transac_replace_container_gate_1(self):
     SessionService.open_session("test_transac_replace_container_gate_1")
     container2 = Container(name="test_transac_replace_container_gate_1",
                            gate_uri="ssh://my_host/docker/test_transac_replace_container_gate_1_container2",
                            primary_admin_gate_name="container name space (pid)", company="Docker",
                            product="Docker", c_type="container")
     container2.save()
     gate = Gate(name="sshd", url="ssh://test_transac_replace_container_gate_1_ugly_docker_admin_endpoint",
                 is_primary_admin=False,
                 container=container2)
     prim_adm_ep = EndpointService.find_endpoint(
         url="ssh://my_host/docker/test_transac_replace_container_gate_1_container2"
     )
     previous_prim_gate = GateService.find_gate(
         nid=prim_adm_ep.parent_node_id
     )
     gate.save()
     SessionService.commit()
     self.assertIsNotNone(gate.id)
     self.assertNotEqual(container2.primary_admin_gate_id, gate.id)
     self.assertTrue(gate.id in container2.nodes_id)
     self.assertTrue(gate.id in container2.gates_id)
     gate.url = "ssh://my_host/docker/test_transac_replace_container_gate_1_container2"
     gate.is_primary_admin = True
     gate.save()
     previous_prim_gate.remove()
     SessionService.commit()
     self.assertEqual(container2.primary_admin_gate_id, gate.id)
     self.assertEqual(container2.gate_uri, gate.url)
     container2.remove()
     SessionService.commit()
     SessionService.close_session()
 def test_transac_get_endpoints(self):
     SessionService.open_session("test_transac_get_endpoints")
     endpoint = Endpoint(url="mysql://test_transac_get_endpoints_container1:4385",
                         parent_node_id=self.node1.id)
     endpoint.save()
     self.assertTrue(endpoint in EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'"))
     self.assertTrue(endpoint in EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'", cid=self.container1.id))
     self.assertTrue(endpoint in EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'", nid=self.node1.id))
     self.assertTrue(endpoint in EndpointService.get_endpoints())
     SessionService.commit()
     self.assertTrue(endpoint in EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'"))
     self.assertTrue(endpoint in EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'", cid=self.container1.id))
     self.assertTrue(endpoint in EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'", nid=self.node1.id))
     self.assertTrue(endpoint in EndpointService.get_endpoints())
     endpoint.remove()
     self.assertFalse(EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'") is not None and
                      endpoint in EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'"))
     self.assertFalse(EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'") is not None and
                      endpoint in EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'", cid=self.container1.id))
     self.assertFalse(EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'") is not None and
                      endpoint in EndpointService.find_endpoint(selector="endpointURL =~ 'mysql:.*'", nid=self.node1.id))
     self.assertFalse(endpoint in EndpointService.get_endpoints())
     SessionService.commit()
     self.assertFalse(endpoint in EndpointService.get_endpoints())
     SessionService.close_session()
 def test_transac_create_remove_transport(self):
     SessionService.open_session("test")
     transport = Transport(name="test_transac_create_remove_transport")
     transport.save()
     SessionService.commit()
     self.assertIsNotNone(transport.id)
     self.assertIsNone(transport.remove())
     SessionService.commit()
     SessionService.close_session()
 def test_transac_create_remove_link_basic(self):
     SessionService.open_session("test_transac_create_remove_link_basic")
     link = Link(source_endpoint_id=self.endpoint1.id, target_endpoint_id=self.endpoint2.id,
                 transport_id=self.transport.id)
     link.save()
     SessionService.commit()
     self.assertIsNotNone(link.id)
     self.assertIsNone(link.remove())
     SessionService.commit()
     SessionService.close_session()
 def test_transac_get_transports(self):
     SessionService.open_session("test")
     transport = Transport(name="test_transac_get_transports")
     transport.save()
     SessionService.commit()
     self.assertTrue(transport in TransportService.get_transports())
     transport.remove()
     SessionService.commit()
     self.assertFalse(transport in TransportService.get_transports())
     SessionService.commit()
     SessionService.close_session()
 def test_transac_get_links(self):
     SessionService.open_session("test_transac_get_links")
     link = Link(source_endpoint_id=self.endpoint1.id, target_endpoint_id=self.endpoint2.id,
                 transport_id=self.transport.id)
     link.save()
     SessionService.commit()
     self.assertTrue(link in LinkService.get_links())
     link.remove()
     SessionService.commit()
     self.assertFalse(link in LinkService.get_links())
     SessionService.commit()
     SessionService.close_session()
 def test_transac_get_clusters(self):
     SessionService.open_session("test_transac_get_clusters")
     new_cluster = Cluster(name="test_transac_get_clusters")
     new_cluster.save()
     self.assertTrue(new_cluster in ClusterService.get_clusters())
     SessionService.commit()
     self.assertTrue(new_cluster in ClusterService.get_clusters())
     new_cluster.remove()
     self.assertTrue(new_cluster not in ClusterService.get_clusters())
     SessionService.commit()
     self.assertTrue(new_cluster not in ClusterService.get_clusters())
     SessionService.close_session()
 def test_transac_node_properties(self):
     SessionService.open_session("test_transac_node_properties")
     gate = Gate(name="sshd", url="ssh://test_transac_node_properties_ugly_docker_admin_endpoint",
                 is_primary_admin=False,
                 container=self.container1)
     gate.add_property(('int_prop', 10), sync=False)
     gate.add_property(('long_prop', 10000000), sync=False)
     gate.add_property(('double_prop', 3.1414), sync=False)
     gate.add_property(('boolean_prop', True), sync=False)
     gate.add_property(('string_prop', "value"), sync=False)
     datacenter = {"dc": "Sagittarius", "gpsLng": 2.251088, "address": "2 rue Baudin", "gpsLat": 48.895345,
                   "town": "Courbevoie", "country": "France"}
     gate.add_property(('map_prop_datacenter', datacenter), sync=False)
     gate.add_property(('array_prop', [1, 2, 3, 4, 5]), sync=False)
     self.assertIsNone(gate.properties)
     gate.save()
     SessionService.commit()
     self.assertTrue('boolean_prop' in gate.properties)
     self.assertTrue('double_prop' in gate.properties)
     self.assertTrue('int_prop' in gate.properties)
     self.assertTrue('long_prop' in gate.properties)
     self.assertTrue('map_prop_datacenter' in gate.properties)
     self.assertTrue('string_prop' in gate.properties)
     self.assertTrue('array_prop' in gate.properties)
     gate.del_property('int_prop', sync=False)
     gate.del_property('long_prop', sync=False)
     gate.del_property('double_prop', sync=False)
     gate.del_property('boolean_prop', sync=False)
     gate.del_property('string_prop', sync=False)
     gate.del_property('map_prop_datacenter', sync=False)
     gate.del_property('array_prop', sync=False)
     self.assertTrue('boolean_prop' in gate.properties)
     self.assertTrue('double_prop' in gate.properties)
     self.assertTrue('int_prop' in gate.properties)
     self.assertTrue('long_prop' in gate.properties)
     self.assertTrue('map_prop_datacenter' in gate.properties)
     self.assertTrue('string_prop' in gate.properties)
     self.assertTrue('array_prop' in gate.properties)
     gate.save()
     SessionService.commit()
     self.assertFalse(gate.properties is not None and 'boolean_prop' in gate.properties)
     self.assertFalse(gate.properties is not None and 'double_prop' in gate.properties)
     self.assertFalse(gate.properties is not None and 'int_prop' in gate.properties)
     self.assertFalse(gate.properties is not None and 'long_prop' in gate.properties)
     self.assertFalse(gate.properties is not None and 'map_prop_datacenter' in gate.properties)
     self.assertFalse(gate.properties is not None and 'string_prop' in gate.properties)
     self.assertFalse(gate.properties is not None and 'array_prop' in gate.properties)
     gate.remove()
     SessionService.commit()
     SessionService.close_session()
 def test_transac_create_remove_node_basic(self):
     SessionService.open_session("test_transac_create_remove_node_basic")
     node = Node(name="mysqld", container_id=self.container1.id)
     node.save()
     SessionService.commit()
     self.assertIsNotNone(node.id)
     self.container1.sync()
     self.assertTrue(node.id in self.container1.nodes_id)
     self.assertIsNone(node.remove())
     self.container1.sync()
     SessionService.commit()
     self.assertFalse(node.id in self.container1.nodes_id)
     SessionService.commit()
     SessionService.close_session()
 def test_transac_create_remove_endpoint_basic(self):
     SessionService.open_session("test_transac_create_remove_endpoint_basic")
     endpoint = Endpoint(url="mysql://test_transac_create_remove_endpoint_basic_container1:4385",
                         parent_node_id=self.node1.id)
     endpoint.save()
     SessionService.commit()
     self.assertIsNotNone(endpoint.id)
     self.node1.sync()
     self.assertTrue(endpoint.id in self.node1.endpoints_id)
     self.assertIsNone(endpoint.remove())
     self.node1.sync()
     self.assertFalse(endpoint.id in self.node1.endpoints_id)
     SessionService.commit()
     SessionService.close_session()
    def test_transac_cluster_link_to_container(self):
        args = {'type': DriverFactory.DRIVER_REST, 'base_url': 'http://localhost:6969/ariane/',
                'user': '******', 'password': '******'}
        MappingService(args)
        SessionService.open_session("test")

        cluster = Cluster(name="test_transac_cluster_link_to_container")
        container = Container(name="test_transac_cluster_link_to_container_container",
                              gate_uri="ssh://my_host/docker/test_transac_cluster_link_to_container_container",
                              primary_admin_gate_name="container name space (pid)", company="Docker",
                              product="Docker", c_type="container")
        cluster.add_container(container, False)
        self.assertTrue(container in cluster.containers_2_add)
        self.assertIsNone(cluster.containers_id)
        self.assertIsNone(container.cluster_id)
        cluster.save()
        self.assertTrue(cluster in ClusterService.get_clusters())
        self.assertTrue(container in ContainerService.get_containers())
        SessionService.commit()
        self.assertTrue(cluster in ClusterService.get_clusters())
        self.assertTrue(container in ContainerService.get_containers())
        self.assertFalse(container in cluster.containers_2_add)
        self.assertTrue(container.id in cluster.containers_id)
        self.assertTrue(container.cluster_id == cluster.id)
        cluster.del_container(container, False)
        self.assertTrue(container in cluster.containers_2_rm)
        self.assertTrue(container.id in cluster.containers_id)
        self.assertTrue(container.cluster_id == cluster.id)
        cluster.save()
        SessionService.commit()
        self.assertFalse(container in cluster.containers_2_rm)
        self.assertTrue(cluster.containers_id.__len__() == 0)
        self.assertIsNone(container.cluster_id)
        cluster.add_container(container)
        SessionService.commit()
        self.assertTrue(container.id in cluster.containers_id)
        self.assertTrue(container.cluster_id == cluster.id)
        cluster.del_container(container)
        SessionService.commit()
        self.assertTrue(cluster.containers_id.__len__() == 0)
        self.assertIsNone(container.cluster_id)
        container.remove()
        cluster.remove()
        self.assertFalse(cluster in ClusterService.get_clusters())
        self.assertFalse(container in ContainerService.get_containers())
        SessionService.commit()
        self.assertFalse(cluster in ClusterService.get_clusters())
        self.assertFalse(container in ContainerService.get_containers())
        SessionService.close_session()
 def test_transac_endpoint_properties(self):
     SessionService.open_session("test_transac_endpoint_properties")
     endpoint = Endpoint(url="mysql://test_transac_endpoint_properties_container1:4385",
                         parent_node_id=self.node1.id)
     endpoint.add_property(('int_prop', 10), sync=False)
     endpoint.add_property(('long_prop', 10000000), sync=False)
     endpoint.add_property(('double_prop', 3.1414), sync=False)
     endpoint.add_property(('boolean_prop', True), sync=False)
     endpoint.add_property(('string_prop', "value"), sync=False)
     datacenter = {"dc": "Sagittarius", "gpsLng": 2.251088, "address": "2 rue Baudin", "gpsLat": 48.895345,
                   "town": "Courbevoie", "country": "France"}
     endpoint.add_property(('map_prop_datacenter', datacenter), sync=False)
     endpoint.add_property(('array_prop', [1, 2, 3, 4, 5]), sync=False)
     self.assertIsNone(endpoint.properties)
     endpoint.save()
     SessionService.commit()
     self.assertTrue('boolean_prop' in endpoint.properties)
     self.assertTrue('double_prop' in endpoint.properties)
     self.assertTrue('int_prop' in endpoint.properties)
     self.assertTrue('long_prop' in endpoint.properties)
     self.assertTrue('map_prop_datacenter' in endpoint.properties)
     self.assertTrue('string_prop' in endpoint.properties)
     self.assertTrue('array_prop' in endpoint.properties)
     endpoint.del_property('int_prop', sync=False)
     endpoint.del_property('long_prop', sync=False)
     endpoint.del_property('double_prop', sync=False)
     endpoint.del_property('boolean_prop', sync=False)
     endpoint.del_property('string_prop', sync=False)
     endpoint.del_property('map_prop_datacenter', sync=False)
     endpoint.del_property('array_prop', sync=False)
     self.assertTrue('boolean_prop' in endpoint.properties)
     self.assertTrue('double_prop' in endpoint.properties)
     self.assertTrue('int_prop' in endpoint.properties)
     self.assertTrue('long_prop' in endpoint.properties)
     self.assertTrue('map_prop_datacenter' in endpoint.properties)
     self.assertTrue('string_prop' in endpoint.properties)
     self.assertTrue('array_prop' in endpoint.properties)
     endpoint.save()
     SessionService.commit()
     self.assertFalse(endpoint.properties is not None and 'boolean_prop' in endpoint.properties)
     self.assertFalse(endpoint.properties is not None and 'double_prop' in endpoint.properties)
     self.assertFalse(endpoint.properties is not None and 'int_prop' in endpoint.properties)
     self.assertFalse(endpoint.properties is not None and 'long_prop' in endpoint.properties)
     self.assertFalse(endpoint.properties is not None and 'map_prop_datacenter' in endpoint.properties)
     self.assertFalse(endpoint.properties is not None and 'string_prop' in endpoint.properties)
     self.assertFalse(endpoint.properties is not None and 'array_prop' in endpoint.properties)
     endpoint.remove()
     SessionService.commit()
     SessionService.close_session()
 def test_transac_get_clusters(self):
     args = {'type': DriverFactory.DRIVER_REST, 'base_url': 'http://localhost:6969/ariane/',
             'user': '******', 'password': '******'}
     MappingService(args)
     SessionService.open_session("test")
     new_cluster = Cluster(name="test_transac_get_clusters")
     new_cluster.save()
     self.assertTrue(new_cluster in ClusterService.get_clusters())
     SessionService.commit()
     self.assertTrue(new_cluster in ClusterService.get_clusters())
     new_cluster.remove()
     self.assertTrue(new_cluster not in ClusterService.get_clusters())
     SessionService.commit()
     self.assertTrue(new_cluster not in ClusterService.get_clusters())
     SessionService.close_session()
 def test_transac_node_properties(self):
     SessionService.open_session("test_transac_node_properties")
     node = Node(name="mysqld1", container=self.container1)
     node.add_property(('int_prop', 10), sync=False)
     node.add_property(('long_prop', 10000000), sync=False)
     node.add_property(('double_prop', 3.1414), sync=False)
     node.add_property(('boolean_prop', True), sync=False)
     node.add_property(('string_prop', "value"), sync=False)
     datacenter = {"dc": "Sagittarius", "gpsLng": 2.251088, "address": "2 rue Baudin", "gpsLat": 48.895345,
                   "town": "Courbevoie", "country": "France"}
     node.add_property(('map_prop_datacenter', datacenter), sync=False)
     node.add_property(('array_prop', [1, 2, 3, 4, 5]), sync=False)
     self.assertIsNone(node.properties)
     node.save()
     SessionService.commit()
     self.assertTrue('boolean_prop' in node.properties)
     self.assertTrue('double_prop' in node.properties)
     self.assertTrue('int_prop' in node.properties)
     self.assertTrue('long_prop' in node.properties)
     self.assertTrue('map_prop_datacenter' in node.properties)
     self.assertTrue('string_prop' in node.properties)
     self.assertTrue('array_prop' in node.properties)
     node.del_property('int_prop', sync=False)
     node.del_property('long_prop', sync=False)
     node.del_property('double_prop', sync=False)
     node.del_property('boolean_prop', sync=False)
     node.del_property('string_prop', sync=False)
     node.del_property('map_prop_datacenter', sync=False)
     node.del_property('array_prop', sync=False)
     self.assertTrue('boolean_prop' in node.properties)
     self.assertTrue('double_prop' in node.properties)
     self.assertTrue('int_prop' in node.properties)
     self.assertTrue('long_prop' in node.properties)
     self.assertTrue('map_prop_datacenter' in node.properties)
     self.assertTrue('string_prop' in node.properties)
     self.assertTrue('array_prop' in node.properties)
     node.save()
     SessionService.commit()
     self.assertFalse(node.properties is not None and 'boolean_prop' in node.properties)
     self.assertFalse(node.properties is not None and 'double_prop' in node.properties)
     self.assertFalse(node.properties is not None and 'int_prop' in node.properties)
     self.assertFalse(node.properties is not None and 'long_prop' in node.properties)
     self.assertFalse(node.properties is not None and 'map_prop_datacenter' in node.properties)
     self.assertFalse(node.properties is not None and 'string_prop' in node.properties)
     self.assertFalse(node.properties is not None and 'array_prop' in node.properties)
     node.remove()
     SessionService.commit()
     SessionService.close_session()
    def test_transac_get_containers(self):
        SessionService.open_session("test_transac_get_containers")

        new_container = Container(name="test_transac_get_containers",
                                  gate_uri="ssh://my_host/docker/test_transac_get_containers",
                                  primary_admin_gate_name="container name space (pid)", company="Docker",
                                  product="Docker", c_type="container")
        new_container.save()
        self.assertTrue(new_container in ContainerService.get_containers())
        SessionService.commit()
        self.assertTrue(new_container in ContainerService.get_containers())
        new_container.remove()
        self.assertFalse(new_container in ContainerService.get_containers())
        SessionService.commit()
        self.assertFalse(new_container in ContainerService.get_containers())
        SessionService.close_session()
 def test_transac_create_remove_node_parent_container(self):
     SessionService.open_session("test_transac_create_remove_node_parent_container")
     container2 = Container(name="test_transac_create_remove_node_parent_container_container2",
                            gate_uri="ssh://my_host/docker/test_transac_create_remove_node_parent_container_container2",
                            primary_admin_gate_name="container name space (pid)", company="Docker",
                            product="Docker", c_type="container")
     node = Node(name="mysqld", container=container2)
     node.save()
     SessionService.commit()
     self.assertIsNotNone(node.id)
     self.assertTrue(node.id in container2.nodes_id)
     self.assertIsNone(node.remove())
     self.assertFalse(node.id in container2.nodes_id)
     container2.remove()
     SessionService.commit()
     SessionService.close_session()
    def test_transac_cluster_link_to_container(self):
        SessionService.open_session("test_transac_cluster_link_to_container")

        cluster = Cluster(name="test_transac_cluster_link_to_container")
        container = Container(name="test_transac_cluster_link_to_container_container",
                              gate_uri="ssh://my_host/docker/test_transac_cluster_link_to_container_container",
                              primary_admin_gate_name="container name space (pid)", company="Docker",
                              product="Docker", c_type="container")
        cluster.add_container(container, False)
        self.assertTrue(container in cluster.containers_2_add)
        self.assertIsNone(cluster.containers_id)
        self.assertIsNone(container.cluster_id)
        cluster.save()
        self.assertTrue(cluster in ClusterService.get_clusters())
        self.assertTrue(container in ContainerService.get_containers())
        SessionService.commit()
        self.assertTrue(cluster in ClusterService.get_clusters())
        self.assertTrue(container in ContainerService.get_containers())
        self.assertFalse(container in cluster.containers_2_add)
        self.assertTrue(container.id in cluster.containers_id)
        self.assertTrue(container.cluster_id == cluster.id)
        cluster.del_container(container, False)
        self.assertTrue(container in cluster.containers_2_rm)
        self.assertTrue(container.id in cluster.containers_id)
        self.assertTrue(container.cluster_id == cluster.id)
        cluster.save()
        SessionService.commit()
        self.assertFalse(container in cluster.containers_2_rm)
        self.assertTrue(cluster.containers_id.__len__() == 0)
        self.assertIsNone(container.cluster_id)
        cluster.add_container(container)
        SessionService.commit()
        self.assertTrue(container.id in cluster.containers_id)
        self.assertTrue(container.cluster_id == cluster.id)
        cluster.del_container(container)
        SessionService.commit()
        self.assertTrue(cluster.containers_id.__len__() == 0)
        self.assertIsNone(container.cluster_id)
        container.remove()
        cluster.remove()
        self.assertFalse(cluster in ClusterService.get_clusters())
        self.assertFalse(container in ContainerService.get_containers())
        SessionService.commit()
        self.assertFalse(cluster in ClusterService.get_clusters())
        self.assertFalse(container in ContainerService.get_containers())
        SessionService.close_session()
 def test_transac_create_remove_gate_basic(self):
     SessionService.open_session("test")
     gate = Gate(name="sshd", url="ssh://test_transac_create_remove_gate_basic_ugly_docker_admin_endpoint",
                 is_primary_admin=True,
                 container_id=self.container1.id)
     gate.save()
     SessionService.commit()
     self.assertIsNotNone(gate.id)
     self.container1.sync()
     self.assertTrue(gate.id in self.container1.nodes_id)
     self.assertTrue(gate.id in self.container1.gates_id)
     self.assertIsNotNone(gate.remove())
     self.container1.sync()
     self.assertTrue(gate.id in self.container1.nodes_id)
     self.assertTrue(gate.id in self.container1.gates_id)
     SessionService.commit()
     SessionService.close_session()
    def test_transac_get_containers(self):
        args = {'type': 'REST', 'base_url': 'http://localhost:6969/ariane/', 'user': '******', 'password': '******'}
        MappingService(args)
        SessionService.open_session("test")

        new_container = Container(name="test_transac_get_containers",
                                  gate_uri="ssh://my_host/docker/test_transac_get_containers",
                                  primary_admin_gate_name="container name space (pid)", company="Docker",
                                  product="Docker", c_type="container")
        new_container.save()
        self.assertTrue(new_container in ContainerService.get_containers())
        SessionService.commit()
        self.assertTrue(new_container in ContainerService.get_containers())
        new_container.remove()
        self.assertFalse(new_container in ContainerService.get_containers())
        SessionService.commit()
        self.assertFalse(new_container in ContainerService.get_containers())
        SessionService.close_session()
 def test_session(self):
     args = {'type': 'REST', 'base_url': 'http://localhost:6969/ariane/', 'user': '******', 'password': '******'}
     MappingService(args)
     session_id = SessionService.open_session("test")
     thread_id = threading.current_thread().ident
     self.assertIn(thread_id, SessionService.session_registry)
     self.assertEqual(SessionService.session_registry[thread_id], session_id)
     SessionService.close_session()
     self.assertNotIn(thread_id, SessionService.session_registry)
 def test_transac_create_remove_node_parent_container_1(self):
     SessionService.open_session("test_transac_create_remove_node_parent_container_1")
     container2 = Container(name="test_transac_create_remove_node_parent_container_1_container2",
                            gate_uri="ssh://my_host/docker/test_transac_create_remove_node_parent_container_1_container2",
                            primary_admin_gate_name="container name space (pid)", company="Docker",
                            product="Docker", c_type="container")
     gate = Gate(name="sshd", url="ssh://test_transac_create_remove_node_parent_container_1_ugly_docker_admin_endpoint2",
                 is_primary_admin=True,
                 container=container2)
     gate.save()
     SessionService.commit()
     self.assertIsNotNone(gate.id)
     self.assertTrue(gate.id in container2.nodes_id)
     self.assertTrue(gate.id in container2.gates_id)
     self.assertIsNotNone(gate.remove())
     self.assertTrue(gate.id in container2.nodes_id)
     self.assertTrue(gate.id in container2.gates_id)
     container2.remove()
     SessionService.commit()
     SessionService.close_session()
 def test_transac_twin_nodes_link(self):
     SessionService.open_session("test_transac_twin_nodes_link")
     container2 = Container(name="test_transac_twin_nodes_link_container2",
                            gate_uri="ssh://my_host/docker/test_transac_twin_nodes_link_container2",
                            primary_admin_gate_name="container name space (pid)", company="Docker",
                            product="Docker", c_type="container")
     gate1 = Gate(name="sshd", url="ssh://test_transac_twin_nodes_link_ugly_docker_admin_endpoint",
                  is_primary_admin=False,
                  container=self.container1)
     gate2 = Gate(name="sshd", url="ssh://test_transac_twin_nodes_link_ugly_docker_admin_endpoint2",
                  is_primary_admin=False,
                  container=container2)
     gate1.add_twin_node(gate2, sync=False)
     self.assertTrue(gate2 in gate1.twin_nodes_2_add)
     gate1.save()
     SessionService.commit()
     self.assertFalse(gate2 in gate1.twin_nodes_2_add)
     self.assertTrue(gate2.id in gate1.twin_nodes_id)
     self.assertTrue(gate1.id in gate2.twin_nodes_id)
     gate2.del_twin_node(gate1, sync=False)
     self.assertTrue(gate1 in gate2.twin_nodes_2_rm)
     self.assertTrue(gate2.id in gate1.twin_nodes_id)
     self.assertTrue(gate1.id in gate2.twin_nodes_id)
     gate2.save()
     SessionService.commit()
     self.assertFalse(gate1 in gate2.twin_nodes_2_rm)
     self.assertFalse(gate2.id in gate1.twin_nodes_id)
     self.assertFalse(gate1.id in gate2.twin_nodes_id)
     gate1.add_twin_node(gate2)
     SessionService.commit()
     self.assertTrue(gate2.id in gate1.twin_nodes_id)
     self.assertTrue(gate1.id in gate2.twin_nodes_id)
     gate2.del_twin_node(gate1)
     SessionService.commit()
     self.assertFalse(gate2.id in gate1.twin_nodes_id)
     self.assertFalse(gate1.id in gate2.twin_nodes_id)
     gate1.remove()
     gate2.remove()
     container2.remove()
     SessionService.commit()
     SessionService.close_session()
 def test_transac_create_remove_endpoint_parent_node(self):
     SessionService.open_session("test_transac_create_remove_endpoint_parent_node")
     container2 = Container(name="test_transac_create_remove_endpoint_parent_node_container2",
                            gate_uri="ssh://my_host/docker/test_container2",
                            primary_admin_gate_name="container name space (pid)", company="Docker",
                            product="Docker", c_type="container")
     node2 = Node(name="mysqld", container=container2)
     node2.save()
     SessionService.commit()
     endpoint2 = Endpoint(url="mysql://test_transac_create_remove_endpoint_parent_node_container1:4385",
                          parent_node=node2)
     endpoint2.save()
     SessionService.commit()
     self.assertIsNotNone(endpoint2.id)
     self.assertTrue(endpoint2.id in node2.endpoints_id)
     self.assertIsNone(endpoint2.remove())
     self.assertFalse(endpoint2.id in node2.endpoints_id)
     node2.remove()
     container2.remove()
     SessionService.commit()
     SessionService.close_session()
    def test_transac_child_containers(self):
        args = {'type': 'REST', 'base_url': 'http://localhost:6969/ariane/', 'user': '******', 'password': '******'}
        MappingService(args)
        SessionService.open_session("test")

        container = Container(name="test_transac_child_containers",
                              gate_uri="ssh://my_host/docker/test_transac_child_containers",
                              primary_admin_gate_name="container name space (pid)", company="Docker",
                              product="Docker", c_type="container")
        container.save()
        SessionService.commit()
        container2 = ContainerService.find_container(cid=container.id)
        self.assertTrue(container2.child_containers_id.__len__() == 0)
        child_container = Container(name="containerized_mysql", gate_uri="mysql://container_ip:mysql_port",
                                    primary_admin_gate_name="mysql cli sock", company="Oracle",
                                    product="MySQL", c_type="MySQL server")
        container.add_child_container(child_container, sync=False)
        self.assertTrue(child_container in container.child_containers_2_add)
        self.assertTrue(container.child_containers_id.__len__() == 0)
        self.assertIsNone(child_container.parent_container_id)
        container.save()
        container2 = ContainerService.find_container(cid=container.id)
        self.assertTrue(container2.child_containers_id.__len__() == 1)
        SessionService.commit()
        self.assertFalse(child_container in container.child_containers_2_add)
        self.assertTrue(child_container.id in container.child_containers_id)
        self.assertTrue(child_container.parent_container_id == container.id)
        container.del_child_container(child_container, sync=False)
        self.assertTrue(child_container in container.child_containers_2_rm)
        self.assertTrue(child_container.id in container.child_containers_id)
        self.assertTrue(child_container.parent_container_id == container.id)
        container.save()
        SessionService.commit()
        self.assertFalse(child_container in container.child_containers_2_rm)
        self.assertFalse(child_container.id in container.child_containers_id)
        self.assertIsNone(child_container.parent_container_id)
        child_container.remove()
        container.remove()
        SessionService.commit()
        SessionService.close_session()
 def test_transac_twin_endpoints_link(self):
     SessionService.open_session("test_transac_twin_endpoints_link")
     container2 = Container(name="test_transac_twin_endpoints_link_container2",
                            gate_uri="ssh://my_host/docker/test_transac_twin_endpoints_link_container2",
                            primary_admin_gate_name="container name space (pid)", company="Docker",
                            product="Docker", c_type="container")
     node2 = Node(name="mysqld2", container=container2)
     endpoint1 = Endpoint(url="mysql://test_transac_twin_endpoints_link_container1:4385", parent_node_id=self.node1.id)
     endpoint2 = Endpoint(url="mysql://test_transac_twin_endpoints_link_container2:4385", parent_node=node2)
     endpoint1.add_twin_endpoint(endpoint2, sync=False)
     self.assertTrue(endpoint2 in endpoint1.twin_endpoints_2_add)
     endpoint1.save()
     SessionService.commit()
     self.assertFalse(endpoint2 in endpoint1.twin_endpoints_2_add)
     self.assertTrue(endpoint2.id in endpoint1.twin_endpoints_id)
     self.assertTrue(endpoint1.id in endpoint2.twin_endpoints_id)
     endpoint2.del_twin_endpoint(endpoint1, sync=False)
     self.assertTrue(endpoint1 in endpoint2.twin_endpoints_2_rm)
     self.assertTrue(endpoint2.id in endpoint1.twin_endpoints_id)
     self.assertTrue(endpoint1.id in endpoint2.twin_endpoints_id)
     endpoint2.save()
     SessionService.commit()
     self.assertFalse(endpoint1 in endpoint2.twin_endpoints_2_rm)
     self.assertFalse(endpoint2.id in endpoint1.twin_endpoints_id)
     self.assertFalse(endpoint1.id in endpoint2.twin_endpoints_id)
     endpoint1.add_twin_endpoint(endpoint2)
     SessionService.commit()
     self.assertTrue(endpoint2.id in endpoint1.twin_endpoints_id)
     self.assertTrue(endpoint1.id in endpoint2.twin_endpoints_id)
     endpoint2.del_twin_endpoint(endpoint1)
     SessionService.commit()
     self.assertFalse(endpoint2.id in endpoint1.twin_endpoints_id)
     self.assertFalse(endpoint1.id in endpoint2.twin_endpoints_id)
     endpoint1.remove()
     endpoint2.remove()
     node2.remove()
     container2.remove()
     SessionService.commit()
     SessionService.close_session()
    def test_transac_child_containers(self):
        SessionService.open_session("test_transac_child_containers")

        container = Container(name="test_transac_child_containers",
                              gate_uri="ssh://my_host/docker/test_transac_child_containers",
                              primary_admin_gate_name="container name space (pid)", company="Docker",
                              product="Docker", c_type="container")
        container.save()
        SessionService.commit()
        container2 = ContainerService.find_container(cid=container.id)
        self.assertTrue(container2.child_containers_id.__len__() == 0)
        child_container = Container(name="containerized_mysql", gate_uri="mysql://container_ip:mysql_port",
                                    primary_admin_gate_name="mysql cli sock", company="Oracle",
                                    product="MySQL", c_type="MySQL server")
        container.add_child_container(child_container, sync=False)
        self.assertTrue(child_container in container.child_containers_2_add)
        self.assertTrue(container.child_containers_id.__len__() == 0)
        self.assertIsNone(child_container.parent_container_id)
        container.save()
        container2 = ContainerService.find_container(cid=container.id)
        self.assertTrue(container2.child_containers_id.__len__() == 1)
        SessionService.commit()
        self.assertFalse(child_container in container.child_containers_2_add)
        self.assertTrue(child_container.id in container.child_containers_id)
        self.assertTrue(child_container.parent_container_id == container.id)
        container.del_child_container(child_container, sync=False)
        self.assertTrue(child_container in container.child_containers_2_rm)
        self.assertTrue(child_container.id in container.child_containers_id)
        self.assertTrue(child_container.parent_container_id == container.id)
        container.save()
        SessionService.commit()
        self.assertFalse(child_container in container.child_containers_2_rm)
        self.assertFalse(child_container.id in container.child_containers_id)
        self.assertIsNone(child_container.parent_container_id)
        child_container.remove()
        container.remove()
        SessionService.commit()
        SessionService.close_session()
 def test_transac_twin_nodes_link(self):
     SessionService.open_session("test_transac_twin_nodes_link")
     container2 = Container(name="test_transac_twin_nodes_link_container2",
                            gate_uri="ssh://my_host/docker/test_transac_twin_nodes_link_container2",
                            primary_admin_gate_name="container name space (pid)", company="Docker",
                            product="Docker", c_type="container")
     node_mysql1 = Node(name="mysqld1", container=self.container1)
     node_mysql2 = Node(name="mysqld2", container=container2)
     node_mysql1.add_twin_node(node_mysql2, sync=False)
     self.assertTrue(node_mysql2 in node_mysql1.twin_nodes_2_add)
     node_mysql1.save()
     SessionService.commit()
     self.assertFalse(node_mysql2 in node_mysql1.twin_nodes_2_add)
     self.assertTrue(node_mysql2.id in node_mysql1.twin_nodes_id)
     self.assertTrue(node_mysql1.id in node_mysql2.twin_nodes_id)
     node_mysql2.del_twin_node(node_mysql1, sync=False)
     SessionService.commit()
     self.assertTrue(node_mysql1 in node_mysql2.twin_nodes_2_rm)
     self.assertTrue(node_mysql2.id in node_mysql1.twin_nodes_id)
     self.assertTrue(node_mysql1.id in node_mysql2.twin_nodes_id)
     node_mysql2.save()
     SessionService.commit()
     self.assertFalse(node_mysql1 in node_mysql2.twin_nodes_2_rm)
     self.assertFalse(node_mysql2.id in node_mysql1.twin_nodes_id)
     self.assertFalse(node_mysql1.id in node_mysql2.twin_nodes_id)
     node_mysql1.add_twin_node(node_mysql2)
     SessionService.commit()
     self.assertTrue(node_mysql2.id in node_mysql1.twin_nodes_id)
     self.assertTrue(node_mysql1.id in node_mysql2.twin_nodes_id)
     node_mysql2.del_twin_node(node_mysql1)
     SessionService.commit()
     self.assertFalse(node_mysql2.id in node_mysql1.twin_nodes_id)
     self.assertFalse(node_mysql1.id in node_mysql2.twin_nodes_id)
     node_mysql1.remove()
     node_mysql2.remove()
     container2.remove()
     SessionService.commit()
     SessionService.close_session()
 def test_transac_change_container_gate_2(self):
     SessionService.open_session("test_transac_change_container_gate_2")
     container2 = Container(name="test_transac_change_container_gate_2",
                            gate_uri="ssh://my_host/docker/test_transac_change_container_gate_2_container2",
                            primary_admin_gate_name="container name space (pid)", company="Docker",
                            product="Docker", c_type="container")
     gate = Gate(name="sshd", url="ssh://test_transac_change_container_gate_2_ugly_docker_admin_endpoint",
                 is_primary_admin=False,
                 container=container2)
     gate.save()
     SessionService.commit()
     self.assertIsNotNone(gate.id)
     self.assertNotEqual(container2.primary_admin_gate_id, gate.id)
     self.assertTrue(gate.id in container2.nodes_id)
     self.assertTrue(gate.id in container2.gates_id)
     gate.is_primary_admin = True
     gate.save()
     SessionService.commit()
     self.assertEqual(container2.primary_admin_gate_id, gate.id)
     self.assertEqual(container2.gate_uri, gate.url)
     container2.remove()
     SessionService.commit()
     SessionService.close_session()
    def test_session_rollback(self):
        args = {'type': 'REST', 'base_url': 'http://localhost:6969/ariane/', 'user': '******', 'password': '******'}
        MappingService(args)

        session_id = SessionService.open_session("test")
        thread_id = threading.current_thread().ident
        self.assertIn(thread_id, SessionService.session_registry)
        self.assertEqual(SessionService.session_registry[thread_id], session_id)

        init_cluster_count = ClusterService.get_clusters().__len__()
        new_cluster = Cluster(name="test_cluster")
        new_cluster.save()
        SessionService.rollback()
        SessionService.close_session()
        self.assertNotIn(thread_id, SessionService.session_registry)

        self.assertEqual(ClusterService.get_clusters().__len__(), init_cluster_count)