예제 #1
0
class Euca3460(unittest.TestCase):
    
    def setUp(self):

        self.conf = "cloud.conf"       
        self.imgName = "windowsserver2003r2_ent_x64.kvm.img"
        self.tester  = Eucaops( config_file=self.conf, password="******" )
        self.source  = "source " + self.tester.credpath + "/eucarc && "
        self.clc1 = self.tester.service_manager.get_enabled_clc() 
        self.iu = ImageUtils(tester=self.tester, config_file=self.conf )
        self.iu.create_emi_from_url( "http://192.168.7.65/windows_images/" + self.imgName )
        self.doAuth()
        
    def doAuth(self):
        self.keypair = self.tester.add_keypair()
        self.group = self.tester.add_group()
        self.tester.authorize_group(self.group)
        self.tester.authorize_group(self.group, port=3389, protocol="tcp")
        self.skey = self.tester.get_secret_key()
        self.akey = self.tester.get_access_key()
                   
    def test_EUCA_3460(self):      
        self.emi = self.tester.get_emi(location=self.imgName)
        #Start the windows instance
        self.reservation = self.tester.run_instance(self.emi,type="m1.large", keypair=self.keypair.name, group=self.group, is_reachable=False,timeout=720)
        # Make sure the windows instance is running
        
        for instance in self.reservation.instances:
            if instance.state == "running":
                self.ip = instance.public_dns_name
                self.instanceid = instance.id
                                
        # Attempt to bundle the running windows instance
        print "Access  = " + self.akey 
        print "Secret  = " + self.skey 
        self.cmd = "euca-bundle-instance " + self.instanceid + " -b " + str(self.keypair) + " -p windows -o " + self.akey + " -w " + self.skey
        self.out = self.clc1.machine.cmd(self.source + self.cmd)
        
        # Check for Bundle ID
        match = re.search(r'bun-........', self.out["output"])
        if match:
            self.tester.debug("Passed test_EUCA_3460: Bundle ID = " + match.group())
        else: 
            self.fail("Failed test_EUCA_3460: Bundle ID not returned") 
         
                       
    def tearDown(self):
        if self.reservation is not None:
            self.tester.terminate_instances(self.reservation)  
        self.tester.delete_keypair(self.keypair)
        self.tester.local("rm " + self.keypair.name + ".pem") 
        shutil.rmtree(self.tester.credpath)  
              
                 
    if __name__ == '__main__':
        unittest.main("Euca3460")
예제 #2
0
class Euca2244(unittest.TestCase):

    def setUp(self):
        self.conf = "cloud.conf"
        self.bucket = "test-bucket"
        self.imgName = "bfebs-centos-vmwaretools-i386.img"
        self.imgUrl =  "http://mirror.qa.eucalyptus-systems.com/bfebs-image/vmware/"     
        self.tester  = Eucaops( config_file=self.conf, password="******" )
        self.source  = "source " + self.tester.credpath + "/eucarc && "
        self.iu = ImageUtils(tester=self.tester, config_file=self.conf )
        self.doAuth()

    def tearDown(self):
        self.tester.sys(self.source + "euca-deregister " + self.emi)
        self.tester.sys(self.source + "euca-delete-bundle -b " + self.imgName + "test0")
        self.tester.delete_keypair(self.keypair)
        self.tester.local("rm " + self.keypair.name + ".pem") 
        shutil.rmtree(self.tester.credpath)  
    
    def doAuth(self):
        self.keypair = self.tester.add_keypair()
        self.group = self.tester.add_group()
        self.tester.authorize_group(self.group)

    def testName(self):
        self.emi = self.iu.create_emi_from_url( self.imgUrl + self.imgName)
        self.out = self.tester.sys(self.source + "euca-describe-images " + self.emi)
        self.count = str(self.out).count("private")
        if self.count==1:
            self.tester.debug("SUCCESS The default image availability is private")
            pass
        else:
            self.fail("FAIL The default image availability is public not private")
예제 #3
0
class Euca1057(unittest.TestCase):
    def setUp(self):
        self.conf = "cloud.conf"
        self.tester = Eucaops(config_file=self.conf, password="******")
        self.iu = ImageUtils(tester=self.tester, config_file=self.conf)
        self.imgName = "bfebs-centos-vmwaretools-i386.img"
        self.imgUrl = "http://mirror.qa.eucalyptus-systems.com/bfebs-image/vmware/"
        self.errorMsg = "all associated instances must be in the terminated state."
        self.count = 0
        self.doAuth()

    def tearDown(self):
        if self.reservation is not None:
            self.tester.terminate_instances(self.reservation)
        self.out = self.runSysCmd("euca-deregister " + self.emi)
        self.tester.delete_keypair(self.keypair)
        self.tester.local("rm " + self.keypair.name + ".pem")
        shutil.rmtree(self.tester.credpath)

    def runSysCmd(self, cmd):
        self.source = "source " + self.tester.credpath + "/eucarc && "
        self.out = self.tester.sys(self.source + cmd)

    def doAuth(self):
        self.keypair = self.tester.add_keypair()
        self.group = self.tester.add_group()
        self.tester.authorize_group(self.group)

    def testName(self):
        self.emi = self.iu.create_emi_from_url(self.imgUrl + self.imgName)
        self.reservation = self.tester.run_instance(image=self.emi,
                                                    is_reachable=False)

        self.runSysCmd("euca-deregister " + self.emi)
        self.count = +str(self.out).count(self.errorMsg)
        if self.count == 1:
            self.tester.debug("SUCCESS proper error thrown ")
            pass
        else:
            self.fail("FAIL incorrect error thrown ")
예제 #4
0
class EucaTest(unittest.TestCase):
    def setUp(self):
        self.start_total_time = time.time()
        self.conf = 'cloud.conf'
        self.tester = Eucaops(config_file=self.conf, password='******')
        self.doAuth()
        self.OK = '\033[1m\033[37m\033[42m'
        self.ENDC = '\033[0m'
        self.imgName = "windowsserver2003r2_ent_x64.kvm.img"

    def tearDown(self):
        self.tester.terminate_instances(self.reservation)
        self.tester.modify_property('cloud.vmstate.instance_timeout', '720')
        self.tester.modify_property('cloud.vmstate.terminated_time', '60')
        self.tester.delete_keypair(self.keypair)
        self.tester.local('rm ' + self.keypair.name + '.pem')
        shutil.rmtree(self.tester.credpath)

    def get_windows_image(self):
        # Check for windows image if there is not one get it.
        try:
            self.emi = self.tester.get_emi(location='windows')
        except:
            self.iu = ImageUtils(tester=self.tester, config_file=self.conf)
            self.iu.create_emi_from_url(
                "http://mirror.eucalyptus-systems.com/images/windows_images/" +
                self.imgName)
            self.emi = self.tester.get_emi(location='windows')

    def runInstances(self, numMax):
        self.emi = self.tester.get_emi(location='windows')
        #Start the windows instance
        self.reservation = self.tester.run_instance(self.emi,
                                                    type="m1.large",
                                                    keypair=self.keypair.name,
                                                    group=self.group,
                                                    is_reachable=False,
                                                    timeout=720)
        # Make sure the windows instance is running
        for instance in self.reservation.instances:
            if instance.state == "running":
                self.ip = instance.public_dns_name
                self.instanceid = instance.id
                self.instance = instance

    def doAuth(self):
        self.keypair = self.tester.add_keypair()
        self.group = self.tester.add_group()
        self.tester.authorize_group(self.group)

    def print_time(self, start):
        elapsed = time.time() - start
        minutes = int(elapsed / 60)
        seconds = int(elapsed % 60)
        print self.OK + "Elapsed time = " + str(minutes) + ' min ' + str(
            seconds) + ' sec ' + self.ENDC

    def test(self):
        self.get_windows_image()
        self.tester.modify_property('cloud.vmstate.instance_timeout', '5')
        self.tester.modify_property('cloud.vmstate.terminated_time', '1')
        self.eunode = self.tester.service_manager.get_all_node_controllers()[0]
        #start an instance
        self.runInstances(1)
        #stop the node controller
        self.eunode.stop()

        # wait for instance to terminate, this can take about 12 minutes.
        self.start = time.time()
        while (str(self.instance.state) != 'terminated'):
            self.tester.debug("Waiting for instance to terminate")
            self.instance.update()
            self.tester.debug("Instance State = " + str(self.instance.state))
            self.tester.sleep(30)
            self.print_time(self.start)

        # wait terminated instance to be cleared from euca-describe-instances output.
        self.start = time.time()
        while (str(
                self.tester.sys('euca-describe-instances ' + self.instanceid))
               != '[]'):
            self.tester.debug(
                str(
                    self.tester.sys('euca-describe-instances ' +
                                    self.instanceid)))
            self.tester.debug("Waiting terminate to clear")
            self.tester.sleep(10)
            self.print_time(self.start)

        # start the node controller
        self.eunode.start()

        # wait for instance to restore, this should not take more than 5 minutes
        self.start = time.time()
        while (str(
                self.tester.sys('euca-describe-instances ' +
                                self.instanceid)) == '[]'):
            self.tester.debug(
                str(
                    self.tester.sys('euca-describe-instances ' +
                                    self.instanceid)))
            self.tester.debug("Waiting for instance to restore.")
            self.tester.sleep(10)
            self.print_time(self.start)
            elapsed = time.time() - self.start
            assert int(elapsed / 60) < 5

        print self.OK + 'Total Time' + self.ENDC
        self.print_time(self.start_total_time)