usr/src/lib/install_target/discovery.py
changeset 1682 c992a85ed3d0
parent 1644 e827d1934114
child 1704 5f40688bef06
equal deleted inserted replaced
1681:c1f54cfadbac 1682:c992a85ed3d0
   166         # if a drive is offline or down return None
   166         # if a drive is offline or down return None
   167         if drive_attributes.status == "DOWN":
   167         if drive_attributes.status == "DOWN":
   168             self.logger.debug("disk '%s' is offline" % new_disk.name)
   168             self.logger.debug("disk '%s' is offline" % new_disk.name)
   169             return None
   169             return None
   170 
   170 
   171         # set attributes for the disk
   171         # set the wwn string, including lun if available
   172         new_disk.wwn = getattr(drive.aliases[0].attributes, "wwn", None)
   172         wwn = getattr(drive.aliases[0].attributes, "wwn", None)
   173 
   173         if wwn is not None:
   174         existing_wwns = [d.wwn for d in \
   174             lun = getattr(drive.aliases[0].attributes, "lun", None)
   175                          self.root.get_descendants(class_type=Disk) \
   175             if lun is not None:
   176                          if d.wwn is not None]
   176                 new_disk.wwn = "%s,%d" % (wwn, lun)
   177 
   177             else:
   178         if new_disk.wwn is not None and new_disk.wwn in existing_wwns:
   178                 new_disk.wwn = wwn
   179             # this wwn has already been discovered, so skip further discovery
       
   180             return None
       
   181 
   179 
   182         for alias in drive.aliases:
   180         for alias in drive.aliases:
   183             # check to see if the wwn changes between drive aliases
       
   184             if getattr(alias.attributes, "wwn", None) != new_disk.wwn:
       
   185                 self.logger.warning("disk '%s' has different wwn for the "
       
   186                                     "aliases" % new_disk.ctd)
       
   187                 return None
       
   188             if drive_media is not None:
   181             if drive_media is not None:
   189                 if self.verify_disk_read(alias.name,
   182                 if self.verify_disk_read(alias.name,
   190                                          drive_media.attributes.blocksize):
   183                                          drive_media.attributes.blocksize):
   191                     new_disk.active_ctds.append(alias.name)
   184                     new_disk.active_ctds.append(alias.name)
   192                 else:
   185                 else: