as None instead of raising an error
Classes derived from this must always declare __slots__ (we use many
- config objects and the memory reduction is useful.
+ config objects and the memory reduction is useful)
"""
__slots__ = []
constants.MAX_TAG_LEN)
if not tag:
raise errors.TagError("Tags cannot be empty")
- if not re.match("^[ \w.+*/:-]+$", tag):
+ if not re.match("^[\w.+*/:-]+$", tag):
raise errors.TagError("Tag contains invalid characters")
def GetTags(self):
if self.dev_type == constants.LD_LV:
val = "<LogicalVolume(/dev/%s/%s" % self.logical_id
elif self.dev_type in constants.LDS_DRBD:
+ node_a, node_b, port, minor_a, minor_b = self.logical_id[:5]
val = "<DRBD8("
if self.physical_id is None:
phy = "unconfigured"
(self.physical_id[0], self.physical_id[1],
self.physical_id[2], self.physical_id[3]))
- val += ("hosts=%s-%s, port=%s, %s, " %
- (self.logical_id[0], self.logical_id[1], self.logical_id[2],
- phy))
+ val += ("hosts=%s/%d-%s/%d, port=%s, %s, " %
+ (node_a, minor_a, node_b, minor_b, port, phy))
if self.children and self.children.count(None) == 0:
val += "backend=%s, metadev=%s" % (self.children[0], self.children[1])
else:
val += ", not visible"
else:
val += ", visible as /dev/%s" % self.iv_name
- val += ", size=%dm)>" % self.size
+ if isinstance(self.size, int):
+ val += ", size=%dm)>" % self.size
+ else:
+ val += ", size='%s')>" % (self.size,)
return val
+ def Verify(self):
+ """Checks that this disk is correctly configured.
+
+ """
+ errors = []
+ if self.mode not in constants.DISK_ACCESS_SET:
+ errors.append("Disk access mode '%s' is invalid" % (self.mode, ))
+ return errors
+
class Instance(TaggableObject):
"""Config object representing an instance."""
"hypervisor",
"hvparams",
"beparams",
- "status",
+ "admin_up",
"nics",
"disks",
"disk_template",
_Helper(nodes, child)
all_nodes = set()
+ all_nodes.add(self.primary_node)
for device in self.disks:
_Helper(all_nodes, device)
return tuple(all_nodes)
"serial_no",
"master_candidate",
"offline",
+ "drained",
]