docs: def create_logical_volume(lv_name, volume_group, size=None):
      '''
      Create a new logical volume in an existing volume group
  
      :param lv_name: str: name of logical volume to be created.
      :param volume_group: str: Name of volume group to use for the new volume.
      :param size: str: Size of logical volume to create (100% if not supplied)
      :raises subprocess.CalledProcessError: in the event that the lvcreate fails.
      '''
      if size:
          check_call([
              'lvcreate',
              '--yes',
              '-L',
              '{}'.format(size),
              '-n', lv_name, volume_group
          ])
      # create the lv with all the space available, this is needed because the
      # system call is different for LVM
      else:
          check_call([
              'lvcreate',
              '--yes',
              '-l',
              '100%FREE',
              '-n', lv_name, volume_group
          ])