def __init__(self, parent=None, parent_draw=None): self.picture = None self.parent_draw = parent_draw self.width = None self.orientation = None if not parent.sku: parent_draw.logger( level="error", message="No SKU found, this adaptor will not be created") return None GenericUcsDrawEquipment.__init__(self, parent=parent) if not self.picture: return self.ports = [] self.parent_draw.paste_layer(self.picture, self.picture_offset) if "UcsImc" not in parent.__class__.__name__: if self.parent_draw.color_ports: if self._parent.sku not in [ "UCSC-PCIE-C25Q-04" ]: #TODO Workaround until fixed on inventory as the port of the PCIe card are not correct and appears as active even when should not self.draw_ports() elif "Rack" in self._parent._parent.__class__.__name__: #TODO Workaround until above problem fixed self.draw_ports() # self.draw_ports() # We drop the picture in order to save on memory self.picture = None
def __init__(self, parent=None, parent_draw=None): self.parent_draw = parent_draw GenericUcsDrawEquipment.__init__(self, parent=parent, orientation="front") if not self.picture: return self.disk_slots_used = [] if not self.parent_draw: self.background = self._create_background(self.canvas_width, self.canvas_height, self.canvas_color) self.draw = self._create_draw() self.parent_draw.paste_layer(self.picture, self.picture_offset) self.storage_controllers = self._get_storage_controllers() self.nvme_disks = [] if hasattr(self._parent, "nvme_drives") and "disks_slots" in self.json_file: self.nvme_disks = self._get_nvme_disks() for disk in self.nvme_disks: self.parent_draw.paste_layer(disk.picture, disk.picture_offset) self.fill_blanks() # We drop the picture in order to save on memory self.picture = None
def __init__(self, parent=None, parent_draw=None, color_ports=True): self.parent_draw = parent_draw self.color_ports = color_ports GenericUcsDrawEquipment.__init__(self, parent=parent) if not self.picture: return if not self.parent_draw: self.background = self._create_background(self.canvas_width, self.canvas_height, self.canvas_color) self.draw = self._create_draw() else: self.background = self.parent_draw.background self.draw = self.parent_draw.draw self.paste_layer(self.picture, self.picture_offset) self.legend_items = [] self.ports = [] if color_ports: self.draw_ports() self.expansion_modules = self.get_expansion_modules() self.fill_blanks() self._file_name = None if not self.parent_draw: self._file_name = self._device_target + "_fi_" + self._parent.id + "_rear" if not self.color_ports: self._file_name = self._device_target + "_fi_" + self._parent.id + "_rear_clear" if color_ports: self.clear_version = UcsSystemDrawFiRear(parent=parent, parent_draw=parent_draw, color_ports=False)
def __init__(self, parent=None, color_ports=True): GenericUcsDrawEquipment.__init__(self, parent=parent) self.color_ports = color_ports if not self.picture: return self.background = self._create_background(self.canvas_width, self.canvas_height, self.canvas_color) self.draw = self._create_draw() self.paste_layer(self.picture, self.picture_offset) self.fabric_port_list = [] self.host_port_list = [] if color_ports: self.draw_ports() self._file_name = self._device_target + "_fex_" + self._parent.id + "_rear" if not self.color_ports: self._file_name = self._device_target + "_fex_" + self._parent.id + "_rear_clear" if color_ports: self.clear_version = UcsSystemDrawFexRear(parent=parent, color_ports=False) # We drop the picture in order to save on memory self.picture = None
def __init__(self, parent=None, parent_draw=None): self.parent_draw = parent_draw GenericUcsDrawEquipment.__init__(self, parent=parent) if not self.picture: return self.ports = [] self.parent_draw.paste_layer(self.picture, self.picture_offset) if self.parent_draw.color_ports: self.draw_ports()
def __init__(self, parent=None, parent_draw=None): self.parent_draw = parent_draw self.module_id = int(parent.id) // 2 + int(parent.id) % 2 GenericUcsDrawEquipment.__init__(self, parent=parent) if not self.picture: return if not self.parent_draw: self.background = self._create_background(self.canvas_width, self.canvas_height, self.canvas_color) self.draw = self._create_draw() self.parent_draw.paste_layer(self.picture, self.picture_offset)
def __init__(self, parent=None): GenericUcsDrawEquipment.__init__(self, parent=parent, orientation="front") if not self.picture: return self.background = self._create_background(self.canvas_width, self.canvas_height, self.canvas_color) self.draw = self._create_draw() self.paste_layer(self.picture, self.picture_offset) if "psus_slots" in self.json_file: self.power_supplies = self.get_power_supplies() self._file_name = self._device_target + "_fex_" + self._parent.id + "_front"
def __init__(self, parent=None, parent_draw=None): self.parent_draw = parent_draw GenericUcsDrawEquipment.__init__(self, parent=parent) if not self.picture: return self.ports = [] self.parent_draw.paste_layer(self.picture, self.picture_offset) if self.parent_draw.color_ports: self.draw_ports() # We drop the picture in order to save on memory self.picture = None
def __init__(self, parent=None, parent_draw=None): self.parent_draw = parent_draw self._parent = parent self.id = int(self._parent.id) if hasattr(self._parent, 'sku'): self.sku = self._parent.sku else: self.sku = None if self._parent.connection_protocol == "NVME": self.device_type = self._parent.connection_protocol + " " + self._parent.drive_type elif self._parent.rotational_speed_marketing: self.device_type = str(self._parent.rotational_speed_marketing ) + " " + self._parent.connection_protocol else: self.device_type = self._parent.drive_type + " " + self._parent.connection_protocol self.disk_size = self._parent.size_marketing self.disk_info = self._get_disk_info() if self.disk_info is not None: self.size = self.disk_info["size"] self.orientation = self.disk_info["orientation"] self.format = self.disk_info["format"] # Special case for M5 NVMe disks if self._parent.connection_protocol == "NVME" and self.format == "sff_m5": self.format = self.format + "_nvme" GenericUcsDrawEquipment.__init__(self, parent=parent) self.background = self._create_background(self.canvas_width, self.canvas_height, self.canvas_color) self.draw = self._create_draw() self.paste_layer(self.picture, (0, 0)) self.draw_disk_information() else: self.size = None self.orientation = None self.format = None self.background = None self.draw = None self.picture = None self.picture_offset = None
def fill_blanks(self): if not self.storage_controllers: if "disks_slots" in self.json_file: # Fill blank for disks slots disks_slots = [ *range(1, len(self.json_file["disks_slots"]) + 1) ] disks_slots = set(disks_slots) - set(self.disk_slots_used) for slot_id in disks_slots: blank_name = None orientation = "horizontal" disk_format = None for disk_slot in self.json_file["disks_slots"]: if disk_slot['id'] == slot_id: orientation = disk_slot['orientation'] disk_format = disk_slot['format'] for model in self.json_file["disks_models"]: if "type" in model and not blank_name: if model["type"] == "blank" and model[ "format"] == disk_format: blank_name = model["name"] img = Image.open( "catalog/drives/img/" + blank_name + ".png", 'r') if orientation == "vertical": img = GenericUcsDrawEquipment.rotate_object( picture=img) if blank_name: for slot in self.json_file["disks_slots"]: if slot["id"] == slot_id: coord = slot["coord"] coord_offset = self.picture_offset[0] + coord[ 0], self.picture_offset[1] + coord[1] self.parent_draw.paste_layer(img, coord_offset)
def __init__(self, parent=None, parent_draw=None): self.parent_draw = parent_draw GenericUcsDrawEquipment.__init__(self, parent=parent) if not self.picture: return if not self.parent_draw: self.background = self._create_background(self.canvas_width, self.canvas_height, self.canvas_color) self.draw = self._create_draw() self.parent_draw.paste_layer(self.picture, self.picture_offset) # self.save_image(self._device_target + "__" + self._parent.id) # We drop the picture in order to save on memory self.picture = None
def __init__(self, parent=None, parent_draw=None): self.picture = None self.parent_draw = parent_draw self.width = None self.orientation = None if not parent.sku: parent_draw.logger( level="error", message="No SKU found, this adaptor will not be created") return None GenericUcsDrawEquipment.__init__(self, parent=parent) if not self.picture: return self.ports = [] self.parent_draw.paste_layer(self.picture, self.picture_offset) if "UcsImc" not in parent.__class__.__name__: if self.parent_draw.color_ports: self.draw_ports()
def fill_blanks(self): if "disks_slots" in self.parent_draw.json_file: # For rack front or blade only if "Front" in self.parent_draw.__class__.__name__ or "Blade" in self.parent_draw.__class__.__name__: if len(self.disks) < len( self.parent_draw.json_file["disks_slots"] ): # Fill blank for disks slots used_slot = [] potential_slot = [] unused_slot = [] for disk in self.disks: used_slot.append(int(disk._parent.id)) # We add to the list of used slots, the slot of potential other Storage Controllers used_slot = list( set(used_slot + self.parent_draw.disk_slots_used)) for disk in self.parent_draw.json_file["disks_slots"]: potential_slot.append(disk["id"]) for blank_id in set(potential_slot) - set(used_slot): unused_slot.append(blank_id) for slot_id in unused_slot: blank_name = None orientation = "horizontal" disk_format = None for disk_slot in self.parent_draw.json_file[ 'disks_slots']: if disk_slot['id'] == slot_id: orientation = disk_slot['orientation'] disk_format = disk_slot['format'] for model in self.parent_draw.json_file[ "disks_models"]: if "type" in model and not blank_name: if model["type"] == "blank" and model[ "format"] == disk_format: blank_name = model["name"] img = Image.open( "catalog/drives/img/" + blank_name + ".png", 'r') if orientation == "vertical": img = GenericUcsDrawEquipment.rotate_object( picture=img) if blank_name: for slot in self.parent_draw.json_file[ "disks_slots"]: if slot["id"] == int(slot_id): coord = slot["coord"] coord_offset = self.parent_draw.picture_offset[0] + coord[0],\ self.parent_draw.picture_offset[1] + coord[1] if self.parent_draw.__class__.__name__ == "GenericUcsDrawBlade": self.parent_draw.parent_draw.paste_layer( img, coord_offset) else: self.parent_draw.paste_layer(img, coord_offset) if "disks_slots_rear" in self.parent_draw.json_file: # For rack rear only if "Rear" in self.parent_draw.__class__.__name__: if len(self.disks) < len( self.parent_draw.json_file["disks_slots_rear"] ): # Fill blank for disks slots used_slot = [] potential_slot = [] unused_slot = [] for disk in self.disks: disk_id = int(disk._parent.id) used_slot.append(disk_id) for disk in self.parent_draw.json_file["disks_slots_rear"]: potential_slot.append(disk["id"]) for blank_id in set(potential_slot) - set(used_slot): unused_slot.append(blank_id) for slot_id in unused_slot: blank_name = None orientation = "horizontal" disk_format = None for disk_slot in self.parent_draw.json_file[ 'disks_slots_rear']: if disk_slot['id'] == slot_id: orientation = disk_slot['orientation'] disk_format = disk_slot['format'] for model in self.parent_draw.json_file[ "disks_models"]: if "type" in model and not blank_name: if model["type"] == "blank" and model[ "format"] == disk_format: blank_name = model["name"] img = Image.open( "catalog/drives/img/" + blank_name + ".png", 'r') if orientation == "vertical": img = GenericUcsDrawEquipment.rotate_object( picture=img) if blank_name: for slot in self.parent_draw.json_file[ "disks_slots_rear"]: if slot["id"] == int(slot_id): coord = slot["coord"] coord_offset = self.parent_draw.picture_offset[0] + coord[0],\ self.parent_draw.picture_offset[1] + coord[1] self.parent_draw.paste_layer(img, coord_offset)