class UnsharedDevice(resources.LogicalDrive): class Meta: identifier = ScopedId("path") # Annoying duplication of this from the node, but it really # is the closest thing we have to a real ID. path = attributes.PosixPath() def get_label(self): hide_prefixes = ["/dev/disk/by-path/", "/dev/disk/by-id/"] path = self.path for prefix in hide_prefixes: if path.startswith(prefix): path = path[len(prefix):] break return path
class DeviceNode(BaseStorageResource): host_id = attributes.Integer() path = attributes.PosixPath() logical_drive = attributes.ResourceReference(optional=True) class Meta: label = "Device node" def get_label(self): path = self.path strip_strings = [ "/dev/", "/dev/mapper/", "/dev/disk/by-id/", "/dev/disk/by-path/" ] strip_strings.sort(lambda a, b: cmp(len(b), len(a))) for s in strip_strings: if path.startswith(s): path = path[len(s):] return "%s:%s" % (self.host_id, path)