KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17
System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64
User : nobody ( 99)
PHP Version : 5.2.17
Disable Function : NONE
Directory :  /proc/22697/root/usr/share/system-config-lvm/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //proc/22697/root/usr/share/system-config-lvm/PhysicalVolume.py
import os
import string
from lvmui_constants import *
from fdisk_wrapper import ID_EMPTY


from Volume import Volume


class PhysicalVolume(Volume):
  def __init__(self, name, fmt, attr, psize, pfree, initialized, total, alloc):
    Volume.__init__(self, name, None, initialized, attr, None)
    
    # pv properties
    self.size = float(psize) #This is in gigabytes
    #self.size_string = self.build_size_string(self.size)
    self.pfree = float(pfree)
    
    self.format = fmt
    
    self.set_extent_count(total, alloc)
    
    self.extent_blocks = []
    
    # type will get changed at set_vg call
    self.type = UNINITIALIZED_TYPE
    
    # general properties
    self.devnames = []
    self.part = None
    self.initializable = True
    
    self.setMultipath(None)
    
  
  def get_size_total_string(self):
    if self.get_type() == PHYS_TYPE:
      size = self.get_size_total_used_free_string()[0]
    else:
      return "%.2f" % self.size + GIG_SUFFIX
  
  def get_description(self, fullpath=True, long_descr=True):
    if fullpath:
      ret_str = self.get_path()
    else:
      ret_str = self.extract_name(self.get_path())
    if long_descr:
      upper_limit = len(self.get_paths())
    else:
      upper_limit = 2
    for path in self.get_paths()[1:upper_limit]:
      if fullpath:
        ret_str = ret_str + ',\n' + path
      else:
        ret_str = ret_str + ',\n' + self.extract_name(path)
    if upper_limit < len(self.get_paths()):
      ret_str = ret_str + ', ...'
    
    if self.part != None:
      if self.part.id == ID_EMPTY and not self.wholeDevice():
        ret_str = UNPARTITIONED_SPACE_ON % ('\n' + ret_str)
    
    return ret_str
  
  def get_type(self):
    return self.type
  
  def add_extent_block(self, extent_block):
    self.extent_blocks.append(extent_block)
    self.__sort_extent_blocks()
  def get_extent_blocks(self):
    return self.extent_blocks
  def __sort_extent_blocks(self):
    blocks = self.extent_blocks
    for i in range(len(blocks) - 1, 0, -1):
      for j in range(i, 0, -1):
        start1, size1 = blocks[j-1].get_start_size()
        start2, size2 = blocks[j].get_start_size()
        if start2 < start1:
          tmp = blocks[j-1]
          blocks[j-1] = blocks[j]
          blocks[j] = tmp
  
  def extract_name(self, path):
    idx = path.rfind("/")
    idx = idx + 1    #Leave off '/' char
    name = path[idx:] #get substring from idx to end of string
    return name
  
  def set_vg(self, vg):
    Volume.set_vg(self, vg)
    if vg == None:
      self.type = UNALLOCATED_TYPE
    else:
      self.type = PHYS_TYPE
  
  def get_paths(self):
    volume_path = Volume.get_path(self)
    part = self.part
    if part == None:
      return [volume_path]
    paths = []
    if volume_path != None:
      paths.append(volume_path)
    for devname in self.devnames:
      if part.id == ID_EMPTY:
        path = devname
      else:
        path = devname + str(part.num)
      if path not in paths:
        paths.append(path)
    return paths
  def get_path(self): # return main path
    if len(self.get_paths()) == 0:
      return None
    else:
      return self.get_paths()[0]
  
  def getDevnames(self):
    return self.devnames
  def addDevname(self, devname):
    devname = devname.strip()
    if devname not in self.devnames:
      self.devnames.append(devname)
  def removeDevname(self, devname):
    if devname in self.devnames:
      self.devnames.pop(self.devnames.index(devname))
  
  def setMultipath(self, multipath):
    self.multipath = multipath
  def getMultipath(self):
    return self.multipath
  
  def setPartition(self, (devname, part)):
    self.size = part.getSizeBytes()/1024.0/1024/1024
    self.part = part
    self.addDevname(devname)
    if part.id == ID_EMPTY:
      self.set_name(UNPARTITIONED_SPACE)
    else:
      self.set_name(_("Partition %s") % str(part.num))
    
    
  def getPartition(self):
    if len(self.getDevnames()) > 0:
      return (self.getDevnames()[0], self.part)
    else:
      return None
  
  def needsFormat(self):
    if self.part == None:
      return False
    return self.part.id == ID_EMPTY
  
  def wholeDevice(self): # part occupies whole device
    if self.part == None:
      return False
    return self.part.wholeDevice
  
  
  
  def print_out(self, padding):
    print padding + 'PV: ' + self.get_name() + ' paths: ' + str(self.get_paths()) + ' devices: ' + str(self.getDevnames()) + ' multipath ' + str(self.getMultipath())
    print padding + 'extents:'
    if len(self.get_extent_blocks()) == 0:
      print padding + '  None'
    for extent in self.get_extent_blocks():
      extent.print_out(padding + '  ')

Anon7 - 2021