Revision f27302fa lib/cmdlib.py
b/lib/cmdlib.py | ||
---|---|---|
3730 | 3730 |
return self.target.GetTags() |
3731 | 3731 |
|
3732 | 3732 |
|
3733 |
class LUAddTag(TagsLU): |
|
3733 |
class LUAddTags(TagsLU):
|
|
3734 | 3734 |
"""Sets a tag on a given object. |
3735 | 3735 |
|
3736 | 3736 |
""" |
3737 |
_OP_REQP = ["kind", "name", "tag"] |
|
3737 |
_OP_REQP = ["kind", "name", "tags"]
|
|
3738 | 3738 |
|
3739 | 3739 |
def CheckPrereq(self): |
3740 | 3740 |
"""Check prerequisites. |
... | ... | |
3743 | 3743 |
|
3744 | 3744 |
""" |
3745 | 3745 |
TagsLU.CheckPrereq(self) |
3746 |
objects.TaggableObject.ValidateTag(self.op.tag) |
|
3746 |
for tag in self.op.tags: |
|
3747 |
objects.TaggableObject.ValidateTag(tag) |
|
3747 | 3748 |
|
3748 | 3749 |
def Exec(self, feedback_fn): |
3749 | 3750 |
"""Sets the tag. |
3750 | 3751 |
|
3751 | 3752 |
""" |
3752 | 3753 |
try: |
3753 |
self.target.AddTag(self.op.tag) |
|
3754 |
for tag in self.op.tags: |
|
3755 |
self.target.AddTag(tag) |
|
3754 | 3756 |
except errors.TagError, err: |
3755 | 3757 |
raise errors.OpExecError("Error while setting tag: %s" % str(err)) |
3756 | 3758 |
try: |
... | ... | |
3761 | 3763 |
" aborted. Please retry.") |
3762 | 3764 |
|
3763 | 3765 |
|
3764 |
class LUDelTag(TagsLU): |
|
3765 |
"""Delete a tag from a given object.
|
|
3766 |
class LUDelTags(TagsLU):
|
|
3767 |
"""Delete a list of tags from a given object.
|
|
3766 | 3768 |
|
3767 | 3769 |
""" |
3768 |
_OP_REQP = ["kind", "name", "tag"] |
|
3770 |
_OP_REQP = ["kind", "name", "tags"]
|
|
3769 | 3771 |
|
3770 | 3772 |
def CheckPrereq(self): |
3771 | 3773 |
"""Check prerequisites. |
... | ... | |
3774 | 3776 |
|
3775 | 3777 |
""" |
3776 | 3778 |
TagsLU.CheckPrereq(self) |
3777 |
objects.TaggableObject.ValidateTag(self.op.tag) |
|
3778 |
if self.op.tag not in self.target.GetTags(): |
|
3779 |
raise errors.OpPrereqError("Tag not found") |
|
3779 |
for tag in self.op.tags: |
|
3780 |
objects.TaggableObject.ValidateTag(tag) |
|
3781 |
del_tags = frozenset(self.op.tags) |
|
3782 |
cur_tags = self.target.GetTags() |
|
3783 |
if not del_tags <= cur_tags: |
|
3784 |
diff_tags = del_tags - cur_tags |
|
3785 |
diff_names = ["'%s'" % tag for tag in diff_tags] |
|
3786 |
diff_names.sort() |
|
3787 |
raise errors.OpPrereqError("Tag(s) %s not found" % |
|
3788 |
(",".join(diff_names))) |
|
3780 | 3789 |
|
3781 | 3790 |
def Exec(self, feedback_fn): |
3782 | 3791 |
"""Remove the tag from the object. |
3783 | 3792 |
|
3784 | 3793 |
""" |
3785 |
self.target.RemoveTag(self.op.tag) |
|
3794 |
for tag in self.op.tags: |
|
3795 |
self.target.RemoveTag(tag) |
|
3786 | 3796 |
try: |
3787 | 3797 |
self.cfg.Update(self.target) |
3788 | 3798 |
except errors.ConfigurationError: |
Also available in: Unified diff