VolumeGroups.filter remove VGs from the list that do no match filter.
Instead of doing that, return a new list that contains VGs that match
the fiter so that VolumeGroups object held by code calling it is not
modified.
Fixes: https://tracker.ceph.com/issues/42171
Signed-off-by: Rishabh Dave <ridave@redhat.com>
(cherry picked from commit
028757813282f764ebcce05572f9e4b76ea4e552)
"""
if not any([vg_name, vg_tags]):
raise TypeError('.filter() requires vg_name or vg_tags (none given)')
- # first find the filtered volumes with the values in self
- filtered_groups = self._filter(
- vg_name=vg_name,
- vg_tags=vg_tags
- )
- # then purge everything
- self._purge()
- # and add the filtered items
- self.extend(filtered_groups)
+
+ filtered_vgs = VolumeGroups(populate=False)
+ filtered_vgs.extend(self._filter(vg_name, vg_tags))
+ return filtered_vgs
def get(self, vg_name=None, vg_tags=None):
"""