コード例 #1
0
ファイル: HAInstance.py プロジェクト: zhujzhuo/trove-1.0.10.4
    def _override_master_to_point_in_time_after_operation(self, op_method):
        old_master_inst_id = utils.get_instance_id_bytenant(DBInstanceType.MASTER)
        master = utils.get_builtin_instance(old_master_inst_id)
        master_vid = master.virtual_instance_id

        # Prepare data before resize.
        db_count = 100 
        utils.generate_databases(master_vid, count = db_count)
        utils.check_generated_databases(master_vid, count = db_count)
        time.sleep(3)
        dt1 = datetime.datetime.now()
        time1 = dt1.strftime('%Y-%m-%d %H:%M:%S')

        def _get_restorable_time(sleep = None):
            if sleep != None:
                time.sleep(sleep)
                
            restorable_time = utils.get_restorable_time(master_vid)
            return restorable_time
        
        before_rt = _get_restorable_time(30)
        op_method()
        after_op_master = utils.get_builtin_instance(master_vid)
        after_rt = _get_restorable_time(30)
        assert before_rt.begin == after_rt.begin and after_rt.end > before_rt.end, \
                                ("before: [%s, %s], after: [%s, %s]" % (before_rt.begin, before_rt.end, after_rt.begin, after_rt.end)) 
        
        # Clear data after resize.
        utils.clear_generated_databases(master_vid, count = db_count)
        utils.check_generated_databases(master_vid, count = 0)
        
        # Restore & check data correctness.
        utils.override_with_backup_byclient(master_vid, None, time1)
        utils.check_server_deleted(after_op_master.id, DBInstanceType.PENDING, timeout = RESTORE_TIME_OUT)
        utils.check_generated_databases(master_vid, count = db_count)
コード例 #2
0
ファイル: HAInstance.py プロジェクト: zhujzhuo/trove-1.0.10.4
    def override_with_backup(self, instance_id=None):
        self.inst_id = instance_id
        if not self.inst_id:
            self.create()
            self.inst_id = utils.get_instance_id_bytenant(DBInstanceType.MASTER)

        old_master_instance = utils.get_builtin_instance(self.inst_id)
        old_group_id = old_master_instance.group_id
        
        old_adm_user_1 = utils.check_mysql_adminuser(self.inst_id)
        backup1 = utils.create_backup_byclient(self.inst_id)
        utils.check_backup_status(backup1.id)
                
        new_password = "******" + str(random.randint(0, 100))
        utils.reset_admin_user_byclient(self.inst_id, new_password)
        new_adm_user_1 = utils.check_mysql_adminuser(self.inst_id)
        assert old_adm_user_1['_password'] != new_adm_user_1['_password'], \
            (old_adm_user_1['_password'], new_adm_user_1['_password'])
        backup2 = utils.create_backup_byclient(self.inst_id)
        utils.check_backup_status(backup2.id)
        
        utils.override_with_backup_byclient(self.inst_id, backup1.id)
        utils.check_server_deleted(old_master_instance.id, type = DBInstanceType.PENDING, timeout = 600)


        self.inst_id = utils.get_instance_id(old_group_id, DBInstanceType.MASTER)
        new_master_instance = utils.get_builtin_instance(self.inst_id)
        self.dbslave_id = utils.get_instance_id(old_group_id, DBInstanceType.STANDBY)
        self.vip_id = utils.get_vip_id(self.inst_id)
        self.group_id = new_master_instance.group_id
        self.validate()
        
        new_adm_user_2 = utils.check_mysql_adminuser(self.inst_id)
        assert old_adm_user_1['_password'] == new_adm_user_2['_password'], \
            (old_adm_user_1['_password'], new_adm_user_2['_password'])
コード例 #3
0
ファイル: HAInstance.py プロジェクト: zhujzhuo/trove-1.0.10.4
    def override_to_point_in_time(self):
        
        self.create()
        old_master_inst = utils.get_builtin_instance(self.inst_id)
        master_vid = old_master_inst.virtual_instance_id

        db_count = 100
        utils.generate_databases(self.inst_id, count = db_count)        
        utils.check_generated_databases(self.inst_id, count = db_count)
        time.sleep(3)
        time1 = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S') 
        utils.clear_generated_databases(self.inst_id, count = db_count)
        time.sleep(3)
        dt2 = datetime.datetime.now()
        time2 = dt2.strftime('%Y-%m-%d %H:%M:%S')

        while True:
            restorable_time = utils.get_restorable_time(self.inst_id)
            dt = datetime.datetime.strptime(restorable_time.end, '%Y-%m-%d %H:%M:%S')
            if dt > dt2:
                break
            time.sleep(3)
            
        utils.override_with_backup_byclient(master_vid, None, time1)
        utils.check_server_deleted(old_master_inst.id, DBInstanceType.PENDING, timeout = RESTORE_TIME_OUT)
        new_master_inst1 = utils.get_builtin_instance(master_vid)
        self.inst_id = new_master_inst1.id
        utils.check_generated_databases(self.inst_id, count = db_count)
        
        time.sleep(3)
        
        utils.override_with_backup_byclient(master_vid, None, time2)
        utils.check_server_deleted(self.inst_id, DBInstanceType.PENDING, timeout = RESTORE_TIME_OUT)
        utils.check_generated_databases(master_vid, count = 0)
        
        self.inst_id = utils.get_instance_id(self.group_id, DBInstanceType.MASTER)
        self.dbslave_id = utils.get_instance_id(self.group_id, DBInstanceType.STANDBY)
        self.validate()