]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: add methods to pass filters to pvs, vgs and lvs commands 32242/head
authorRishabh Dave <ridave@redhat.com>
Thu, 21 Nov 2019 14:33:32 +0000 (20:03 +0530)
committerRishabh Dave <ridave@redhat.com>
Mon, 6 Jan 2020 13:57:42 +0000 (19:27 +0530)
Filters can be passed to these commands by using option '-S'.

Signed-off-by: Rishabh Dave <ridave@redhat.com>
src/ceph-volume/ceph_volume/api/lvm.py

index 4e37e3f65804bd379d3d763adcfef1b1dad1e507..9849c4d6f761fdda860e736c217f6b62347b1ecb 100644 (file)
@@ -1343,3 +1343,39 @@ def create_lvs(volume_group, parts=None, size=None, name_prefix='ceph-lv'):
             create_lv(name_prefix, uuid.uuid4(), vg=volume_group.name, extents=extents, tags=tags)
         )
     return lvs
+
+
+#############################################################
+#
+# New methods to get PVs, LVs, and VGs.
+# Later, these can be easily merged with get_api_* methods
+#
+###########################################################
+
+PV_FIELDS = 'pv_name,pv_tags,pv_uuid,vg_name,lv_uuid'
+VG_FIELDS = 'vg_name,pv_count,lv_count,snap_count,vg_attr,vg_size,vg_free,vg_free_count'
+LV_FIELDS = 'lv_tags,lv_path,lv_name,vg_name,lv_uuid,lv_size'
+
+def get_pvs(fields=PV_FIELDS, sep='";"', filters=''):
+    args = ['pvs', '--no-heading', '--readonly', '--separator=' + sep, '-S',
+            filters, '-o', fields]
+
+    stdout, stderr, returncode = process.call(args, verbose_on_failure=False)
+    pvs_report = _output_parser(stdout, fields)
+    return [PVolume(**pv_report) for pv_report in pvs_report]
+
+def get_vgs(fields=VG_FIELDS, sep='";"', filters=''):
+    args = ['vgs', '--no-heading', '--readonly', '--separator=' + sep, '-S',
+            filters, '-o', fields]
+
+    stdout, stderr, returncode = process.call(args, verbose_on_failure=False)
+    vgs_report =_output_parser(stdout, fields)
+    return [VolumeGroup(**vg_report) for vg_report in vgs_report]
+
+def get_lvs(fields=LV_FIELDS, sep='";"', filters=''):
+    args = ['lvs', '--no-heading', '--readonly', '--separator=' + sep, '-S',
+            filters, '-o', fields]
+
+    stdout, stderr, returncode = process.call(args, verbose_on_failure=False)
+    lvs_report = _output_parser(stdout, fields)
+    return [Volume(**lv_report) for lv_report in lvs_report]