Beispiel #1
0
    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)
Beispiel #2
0
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]))