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: |