示例#1
0
    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'])
示例#2
0
    def reset_adm_user(self):
        self.inst_id = utils.get_instance_id_bytenant(DBInstanceType.SINGLE)
        old_adm_user = utils.check_mysql_adminuser(self.inst_id)

        new_password = "******" + str(random.randint(0, 100))
        utils.reset_admin_user_byclient(self.inst_id, new_password)
        new_adm_user = utils.check_mysql_adminuser(self.inst_id)
        assert old_adm_user['_password'] != new_adm_user['_password'], (old_adm_user, new_adm_user)
示例#3
0
    def create_with_backup(self, master_id=None, check_admin=True):

        def _create_with_backup(self, backup, admin_user=None, admin_password=None):
            self.inst_id = utils.create_rds_byclient("HA", backup=backup.id, admin_user=admin_user,
                                                     admin_password=admin_password)
            utils.check_server_status(self.inst_id, expected_task=utils.tasks.InstanceTasks.NONE,
                                      type=DBInstanceType.MASTER,
                                      expected_svr_status=utils.ServiceStatuses.RUNNING,
                                      deleted=False, timeout=600)
            self.vip_id = utils.get_vip_id(self.inst_id)
            _inst = utils.get_builtin_instance(self.inst_id)
            self.group_id = _inst.group_id
            self.dbslave_id = utils.get_instance_id(self.group_id, DBInstanceType.STANDBY)
            LOG.info('master_id:%s slave_id:%s' % (self.inst_id, self.dbslave_id))
            self.validate()
            return self.inst_id

        if master_id is not None:
            self.inst_id = master_id
        else:
            self.inst_id = utils.get_instance_id_bytenant(DBInstanceType.MASTER)

        if self.inst_id is None:
            raise Exception("not found HA instance")
        #backup = utils.create_backup_byclient(self.inst_id, backup_type='snapshot')
        backup = utils.create_backup_byclient(self.inst_id)
        utils.check_backup_status(backup.id)
        utils.check_backup_path(backup.id)
        _create_with_backup(self, backup, admin_user=None, admin_password=None)
        if check_admin:
            old_adm_user_1 = utils.check_mysql_adminuser(self.inst_id)
            utils.check_admin(self, _create_with_backup, backup, old_adm_user_1)
示例#4
0
 def _validate(self, master_id, validated_inst_id):
     utils.check_server_status(validated_inst_id,expected_task=utils.tasks.InstanceTasks.NONE,
                               type=DBInstanceType.READ_REPLI,
                               expected_svr_status=utils.ServiceStatuses.RUNNING,
                               deleted=False,timeout=300)
     
     utils.check_mysql_adminuser(validated_inst_id)
     utils.check_vip(master_id)
     vip_id = utils.get_vip_id(validated_inst_id)
     utils.check_vip(validated_inst_id,vip_id=vip_id)
 
     utils.check_rpl_delay(validated_inst_id)
     
     master_ip = utils.check_allocate_ip(utils.get_builtin_instance(master_id).server)
     rr_ip = utils.check_allocate_ip(utils.get_builtin_instance(validated_inst_id).server)
     
     utils.check_rpl_consist(master_id, [validated_inst_id],master_ip,[rr_ip])
     utils.check_rpl_topo_rr(self.group_id)
示例#5
0
    def validate(self):
        utils.check_server_status(self.inst_id, expected_task=utils.tasks.InstanceTasks.NONE,
                                  expected_svr_status=utils.ServiceStatuses.RUNNING,
                                  deleted=False)
        inst_db_info = utils.get_instance(self.inst_id)
        self.group_id = inst_db_info.group_id

        utils.check_mysql_adminuser(inst_db_info.id)
        
        _ret = utils.get_builtin_instance(inst_db_info.id)
        self.nova_instance = _ret.server
        
#         ip = utils.check_allocate_ip(self.nova_instance)
        utils.check_mysql_is_running(inst_db_info.id)
        utils.check_vip(inst_db_info.id)
        
        self.backup_id = utils.check_backup(self.group_id)
        utils.check_backup_status(self.backup_id)
        utils.check_backup_path(self.backup_id)
        
        utils.check_rpl_topo_single(self.group_id)
示例#6
0
 def validate(self):
     utils.check_server_status(self.inst_id, expected_task=utils.tasks.InstanceTasks.NONE,
                               type=DBInstanceType.MASTER,
                               expected_svr_status=utils.ServiceStatuses.RUNNING,
                               deleted=False, timeout=600)
     
     utils.check_server_status(self.dbslave_id, expected_task=utils.tasks.InstanceTasks.NONE,
                               type=DBInstanceType.STANDBY,
                               expected_svr_status=utils.ServiceStatuses.RUNNING,
                               deleted=False, timeout=600)
     
     rr_items = InstanceGroupItem.get_by_gid_type(utils.get_context(), self.group_id, DBInstanceType.READ_REPLI, deleted = False)
     slave_ids = []
     for rr in rr_items:
         slave_ids.append(rr.instance_id)
     slave_ids.append(self.dbslave_id)
     
     utils.check_mysql_adminuser(self.inst_id)
     utils.check_mysql_adminuser(self.dbslave_id)
     
     for _id in [self.inst_id, self.dbslave_id]:
         utils.check_mysql_is_running(self.inst_id)
     
     utils.check_vip(self.inst_id, vip_id=self.vip_id)
     self.backup_id = utils.check_backup(self.group_id)
     utils.check_backup_status(self.backup_id) 
     utils.check_backup_path(self.backup_id)
     
     for slave_id in slave_ids:
         utils.check_rpl_delay(slave_id)
         
     master_inst = utils.get_builtin_instance(self.inst_id)
     slave_inst = utils.get_builtin_instance(self.dbslave_id)
     master_ip = utils.check_allocate_ip(master_inst.server)
     slave_ip = utils.check_allocate_ip(slave_inst.server)
     LOG.info("master_ip:%s  slave_ip:%s" % (master_ip, slave_ip))
     utils.check_rpl_consist(self.inst_id, slave_ids, master_ip, [slave_ip])
     utils.check_rpl_topo_ha(self.group_id)
示例#7
0
    def create_with_backup(self, inst_id=None, check_admin=True):

        def _create_with_backup(self, backup, admin_user=None, admin_password=None):
            self.inst_id = utils.create_rds_byclient("SG", backup=backup.id, admin_user=admin_user,
                                                     admin_password=admin_password)
            self.validate()
            return self.inst_id

        if inst_id != None:
            self.inst_id = inst_id
        else:
            self.inst_id = utils.get_instance_id_bytenant(DBInstanceType.SINGLE)
        backup = utils.create_backup_byclient(self.inst_id)
        utils.check_backup_status(backup.id)
        utils.check_backup_path(backup.id)
        _create_with_backup(self, backup, admin_user=None, admin_password=None)
        if check_admin:
            old_adm_user_1 = utils.check_mysql_adminuser(self.inst_id)
            utils.check_admin(self, _create_with_backup, backup, old_adm_user_1)