Best Python code snippet using avocado_python
lv_utils.py
Source:lv_utils.py  
...258                      process.run("lvdisplay").stdout)):259            # the above conditions detect if merge of snapshot was postponed260            logging.warning(("Logical volume %s is still active! " +261                             "Attempting to deactivate..."), lv_name)262            lv_reactivate(vg_name, lv_name)263            result = process.run(cmd)264        else:265            raise ex266    logging.info(result.stdout.rstrip())267@error_context.context_aware268def lv_revert(vg_name, lv_name, lv_snapshot_name):269    """270    Revert the origin to a snapshot.271    """272    error_context.context("Reverting original logical volume to snapshot",273                          logging.info)274    try:275        if not vg_check(vg_name):276            raise exceptions.TestError("Volume group could not be found")277        if not lv_check(vg_name, lv_snapshot_name):278            raise exceptions.TestError("Snapshot could not be found")279        if (not lv_check(vg_name, lv_snapshot_name) and280                not lv_check(vg_name, lv_name)):281            raise exceptions.TestError(282                "Snapshot and its origin could not be found")283        if (lv_check(vg_name, lv_snapshot_name) and284                not lv_check(vg_name, lv_name)):285            raise exceptions.TestError("Snapshot origin could not be found")286        cmd = ("lvconvert --merge /dev/%s/%s" % (vg_name, lv_snapshot_name))287        result = process.run(cmd)288        if ("Merging of snapshot %s will start next activation." %289                lv_snapshot_name) in result.stdout:290            raise exceptions.TestError("The logical volume %s is still "291                                       "active" % lv_name)292        result = result.stdout.rstrip()293    except exceptions.TestError, ex:294        # detect if merge of snapshot was postponed295        # and attempt to reactivate the volume.296        if (('Snapshot could not be found' in ex and297             re.search(re.escape(lv_snapshot_name + " [active]"),298                       process.run("lvdisplay").stdout)) or299                ("The logical volume %s is still active" % lv_name) in ex):300            logging.warning(("Logical volume %s is still active! " +301                             "Attempting to deactivate..."), lv_name)302            lv_reactivate(vg_name, lv_name)303            result = "Continuing after reactivation"304        elif 'Snapshot could not be found' in ex:305            logging.error(ex)306            result = "Could not revert to snapshot"307        else:308            raise ex309    logging.info(result)310@error_context.context_aware311def lv_revert_with_snapshot(vg_name, lv_name,312                            lv_snapshot_name, lv_snapshot_size):313    """314    Perform logical volume merge with snapshot and take a new snapshot.315    """316    error_context.context("Reverting to snapshot and taking a new one",317                          logging.info)318    lv_revert(vg_name, lv_name, lv_snapshot_name)319    lv_take_snapshot(vg_name, lv_name, lv_snapshot_name, lv_snapshot_size)320@error_context.context_aware321def lv_reactivate(vg_name, lv_name, timeout=10):322    """323    In case of unclean shutdowns some of the lvs is still active and merging324    is postponed. Use this function to attempt to deactivate and reactivate325    all of them to cause the merge to happen.326    """327    try:328        process.run("lvchange -an /dev/%s/%s" % (vg_name, lv_name))329        time.sleep(timeout)330        process.run("lvchange -ay /dev/%s/%s" % (vg_name, lv_name))331        time.sleep(timeout)332    except process.CmdError:333        logging.error(("Failed to reactivate %s - please, " +334                       "nuke the process that uses it first."), lv_name)335        raise exceptions.TestError(...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
