code: def find_volume_groups(self):
          
  
          os.environ['LVM_SUPPRESS_FD_WARNINGS'] = '1'
  
          # find volume groups
          try:
              result = _util.check_output_(['pvdisplay'])
              pvname = vgname = None
              for line in result.splitlines():
                  if '--- Physical volume ---' in line:
                      pvname = vgname = None
                  elif "PV Name" in line:
                      pvname = line.replace("PV Name", "").strip()
                  elif "VG Name" in line:
                      vgname = line.replace("VG Name", "").strip()
  
                  if pvname and vgname:
                      try:
                          # unmount volume groups with a physical volume originating from a disk image
                          if re.match(self.orig_re_pattern, self.loopbacks[pvname]):
                              yield vgname, pvname
                      except Exception:
                          pass
                      pvname = vgname = None
  
          except Exception:
              pass
docs: Finds all volume groups that are mounted through a loopback originating from :attr:`orig_re_pattern`.
  
          Generator yields tuples of vgname, pvname