def changeVGTags(self, vgName, delTags=(), addTags=()): try: vg_md = self.vgmd[vgName] except KeyError: raise se.VolumeGroupReplaceTagError("VG %s does not exist" % vgName) # Adding an existing tag or removing a nonexistent tag are ignored tags = set(vg_md['tags']) tags |= set(addTags) tags -= set(delTags) vg_md['tags'] = tuple(tags)
def changeVGTags(vgName, delTags=(), addTags=()): delTags = set(delTags) addTags = set(addTags) if delTags.intersection(addTags): raise se.VolumeGroupReplaceTagError( "Cannot add and delete the same tag vg: `%s` tags: `%s`" % (vgName, ", ".join(delTags.intersection(addTags)))) cmd = ["vgchange"] for tag in delTags: cmd.extend(("--deltag", tag)) for tag in addTags: cmd.extend(("--addtag", tag)) cmd.append(vgName) rc, out, err = _lvminfo.cmd(cmd, _lvminfo._getVGDevs((vgName, ))) _lvminfo._invalidatevgs(vgName) if rc != 0: raise se.VolumeGroupReplaceTagError( "vg:%s del:%s add:%s (%s)" % (vgName, ", ".join(delTags), ", ".join(addTags), err[-1]))