'Initialize the LVM object.
The LVM object is based on an LVM VolumeGroup, one instantiation
for each VolumeGroup you have/use.
:param vg_name: Name of existing VG or VG to create
:param root_helper: Execution root_helper method to use
:param create_vg: Indicates the VG doesn\'t exist
and we want to create it
:param physical_volumes: List of PVs to build VG on
:param lvm_type: VG and Volume type (default, or thin)
:param executor: Execute method to use, None uses common/processutils
:param suppress_fd_warn: Add suppress FD Warn to LVM env'

def __init__(self, vg_name, root_helper, create_vg=False, physical_volumes=None, lvm_type='default', executor=putils.execute, lvm_conf=None, suppress_fd_warn=False):

    super(LVM, self).__init__(execute=executor, root_helper=root_helper)
    self.vg_name = vg_name
    self.pv_list = []
    self.vg_size = 0.0
    self.vg_free_space = 0.0
    self.vg_lv_count = 0
    self.vg_uuid = None
    self.vg_thin_pool = None
    self.vg_thin_pool_size = 0.0
    self.vg_thin_pool_free_space = 0.0
    self._supports_snapshot_lv_activation = None
    self._supports_lvchange_ignoreskipactivation = None
    self.vg_provisioned_capacity = 0.0
    if (lvm_type not in ['default', 'thin']):
        raise exception.Invalid('lvm_type    must    be    "default"    or    "thin"')
    _lvm_cmd_prefix = ['env', 'LC_ALL=C']
    if (lvm_conf and os.path.isfile(lvm_conf)):
        lvm_sys_dir = os.path.dirname(lvm_conf)
        _lvm_cmd_prefix.append(('LVM_SYSTEM_DIR=' + lvm_sys_dir))
    if suppress_fd_warn:
        _lvm_cmd_prefix.append('LVM_SUPPRESS_FD_WARNINGS=1')
    LVM.LVM_CMD_PREFIX = _lvm_cmd_prefix
    if (create_vg and (physical_volumes is not None)):
        self.pv_list = physical_volumes
        try:
            self._create_vg(physical_volumes)
        except putils.ProcessExecutionError as err:
            LOG.exception('Error    creating    Volume    Group')
            LOG.error('Cmd                    :%s', err.cmd)
            LOG.error('StdOut        :%s', err.stdout)
            LOG.error('StdErr        :%s', err.stderr)
            raise exception.VolumeGroupCreationFailed(vg_name=self.vg_name)
    if (self._vg_exists() is False):
        LOG.error('Unable    to    locate    Volume    Group    %s', vg_name)
        raise exception.VolumeGroupNotFound(vg_name=vg_name)
    if (lvm_type == 'thin'):
        pool_name = ('%s-pool' % self.vg_name)
        if (self.get_volume(pool_name) is None):
            try:
                self.create_thin_pool(pool_name)
            except putils.ProcessExecutionError:
                if (self.get_volume(pool_name) is None):
                    raise
        self.vg_thin_pool = pool_name
        self.activate_lv(self.vg_thin_pool)
    self.pv_list = self.get_all_physical_volumes(root_helper, vg_name)
