Revision 1b40b5e3

b/snf-cyclades-app/synnefo/tools/burnin.py
623 623
        cls.username = dict()
624 624
        cls.password = dict()
625 625

  
626

  
627
    def _get_ipv4(self, server):
628
    
629
        """Get the public IPv4 of a server from the detailed server info"""
630

  
631
        public_addrs = filter(lambda x: x["id"] == "public",
632
                              server["addresses"]["values"])
633
        self.assertEqual(len(public_addrs), 1)
634
        ipv4_addrs = filter(lambda x: x["version"] == 4,
635
                            public_addrs[0]["values"])
636
        self.assertEqual(len(ipv4_addrs), 1)
637
        return ipv4_addrs[0]["addr"]
638

  
639

  
640
    def _connect_loginname(self, os):
641
        """Return the login name for connections based on the server OS"""
642
        if os in ("Ubuntu", "Kubuntu", "Fedora"):
643
            return "user"
644
        elif os in ("windows", "windows_alpha1"):
645
            return "Administrator"
646
        else:
647
            return "root"
648

  
649

  
626 650
    def test_0001_submit_create_server_A(self):
627 651
        """Test submit create server request"""
628 652
        serverA = self.client.create_server(self.servername, self.flavorid,
......
732 756
        self.assertTrue(conn_exists)
733 757
            
734 758

  
759
    def test_002a_setup_interface_A(self):
760

  
761
        server = self.client.get_server_details(self.serverid['A'])
762
        image = self.client.get_image_details(self.serverid['A'])
763
        os = image['metadata']['values']['os']
764
        loginname = image["metadata"]["values"].get("users", None)
765
        hostip = self._get_ipv4(server) 
766
        
767
        if not loginname:
768
            loginname = self._connect_loginname(os)
769

  
770
        try:
771
            ssh = paramiko.SSHClient()
772
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
773
            ssh.connect(hostip, username = loginname, password = self.password['A'])
774
        except socket.error:
775
            raise AssertionError
776

  
777
        stdin, stdout, stderr = ssh.exec_command("ifconfig eth1 %s up"%("192.168.0.42"))
778
        lines = stdout.readlines()
779

  
780
        self.assertEqual(len(lines), 0)
781
        
782

  
783
    def test_002b_setup_interface_B(self):
784

  
785
        server = self.client.get_server_details(self.serverid['B'])
786
        image = self.client.get_image_details(self.serverid['B'])
787
        os = image['metadata']['values']['os']
788
        loginname = image["metadata"]["values"].get("users", None)
789
        hostip = self._get_ipv4(server) 
790
        
791
        if not loginname:
792
            loginname = self._connect_loginname(os)
793

  
794
        try:
795
            ssh = paramiko.SSHClient()
796
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
797
            ssh.connect(hostip, username = loginname, password = self.password['B'])
798
        except socket.error:
799
            raise AssertionError
800

  
801
        stdin, stdout, stderr = ssh.exec_command("ifconfig eth1 %s up"%("192.168.0.43"))
802
        lines = stdout.readlines()
803

  
804
        self.assertEqual(len(lines), 0)
805

  
806

  
807

  
808
    def test_002a_test_connection_exists(self):
809
        """Ping serverB from serverA to test if connection exists"""
810

  
811
        server = self.client.get_server_details(self.serverid['A'])
812
        image = self.client.get_image_details(self.serverid['A'])
813
        os = image['metadata']['values']['os']
814
        loginname = image["metadata"]["values"].get("users", None)
815
        
816
        hostip = self._get_ipv4(server)
817
        
818
        if not loginname:
819
            loginname = self._connect_loginname(os)
820

  
821
        try:
822
            ssh = paramiko.SSHClient()
823
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
824
            ssh.connect(hostip, username = loginname, password = self.password['A'])
825
        except socket.error:
826
            raise AssertionError
827

  
828
        cmd = "if ping -c 2 -w 3 %s >/dev/null; then echo \"True\"; fi;" % ("192.168.0.43")
829
        stdin, stdout, stderr = ssh.exec_command(cmd)
830
        lines = stdout.readlines()
831

  
832
        for i in lines:
833
            if i=='True\n':
834
                exists = True
835

  
836
        self.assertTrue(exists)
837

  
838

  
839

  
735 840
    def test_003_disconnect_from_network(self):
736 841
        prev_state = self.client.get_network_details(self.networkid)
737 842
        prev_conn = len(prev_state['servers']['values'])

Also available in: Unified diff