Darshan N has uploaded a new change for review. Change subject: gluster: volume snapshot list, restore and status verbs. ......................................................................
gluster: volume snapshot list, restore and status verbs. This Patch adds two new verbs to get the snapshot info and status. *glusterSnapshotStatus: gives the status of snapshots. volume name or snap name can be provided as an optional argument, if provided status of snaps related to that volume or status of that snap is returned. Returns: {'snapshots': [{ 'name': 'snap1', 'uuid': 'uuid', 'volCount': 'NoOfVolumes', 'volumes': [{ 'brickCount': 'NoOfBricks', 'bricks': [{ 'path': 'brickPath', 'volumeGroup': 'VolumeGroup', 'pid': 'PID', 'lvUsage': 'LV Usage', 'lvSize': 'LV Size', }] }] }] } *glusterSnapshotInfo: gives the information of snapshots. It takes volume name as argument, and lists the information of all snapshots taken for that volume. Returns: {'SnapInfo': {'originVolume': {'name': 'originVolumeName' 'snapCount': 'snapshot count' 'snapRemaining': 'nos of snaps remaining' }, } {'snapshots': [ {'name': 'snapName', 'uuid': 'uuid', 'description': 'description', 'createTime': 'time of creation', 'volCount': 'volume count', 'snapVolumes': [{'name': 'snapVolumeName', 'status': 'status'}] } ] } } Signed-off-by: Darshan N <dnara...@redhat.com> Change-Id: I06945d6781432b7fb40e417dd21c0ecf107de132 --- M client/vdsClientGluster.py M tests/Makefile.am A tests/glusterSnapshotInfo.xml A tests/glusterSnapshotStatus.xml M tests/glusterTestData.py M tests/gluster_cli_tests.py M vdsm.spec.in M vdsm/gluster/api.py M vdsm/gluster/apiwrapper.py M vdsm/gluster/exception.py M vdsm/rpc/vdsmapi-gluster-schema.json 11 files changed, 579 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/87/36087/1 diff --git a/client/vdsClientGluster.py b/client/vdsClientGluster.py index 22cd974..c741148 100644 --- a/client/vdsClientGluster.py +++ b/client/vdsClientGluster.py @@ -453,6 +453,23 @@ pp.pprint(status) return status['status']['code'], status['status']['message'] + def do_glusterSnapshotStatus(self, args): + params = self._eqSplit(args) + snapName = params.get('snapName', '') + volumeName = params.get('volumeName', '') + + status = self.s.glusterSnapshotStatus(snapName, volumeName) + pp.pprint(status) + return status['status']['code'], status['status']['message'] + + def do_glusterSnapshotInfo(self, args): + params = self._eqSplit(args) + volumeName = params.get('volumeName', '') + + status = self.s.glusterSnapshotInfo(volumeName) + pp.pprint(status) + return status['status']['code'], status['status']['message'] + def getGlusterCmdDict(serv): return \ @@ -766,4 +783,15 @@ ('snapName=<snap_name> | volumeName=<volume name> ', 'delete gluster volume snapshot' )), + 'glusterSnapshotStatus': ( + serv.do_glusterSnapshotStatus, + ('[snapName=snap_name]' + '[volumeName=<volume_name>]', + 'snapshot status' + )), + 'glusterSnapshotInfo': ( + serv.do_glusterSnapshotInfo, + ('volumeName=<volume_name>', + 'snapshot info' + )), } diff --git a/tests/Makefile.am b/tests/Makefile.am index b365921..6895a87 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -123,6 +123,8 @@ caps_lscpu_ppc64_2_4_8.out \ caps_numactl_4_nodes.out \ glob_1c60971a-8647-44ac-ae33-6520887f8843.out \ + glusterSnapshotInfo.xml \ + glusterSnapshotStatus.xml \ glusterVolumeProfileInfo.xml \ glusterVolumeProfileInfoNfs.xml \ glusterVolumeRebalanceStatus.xml \ diff --git a/tests/glusterSnapshotInfo.xml b/tests/glusterSnapshotInfo.xml new file mode 100644 index 0000000..07edfe9 --- /dev/null +++ b/tests/glusterSnapshotInfo.xml @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<cliOutput> + <opRet>0</opRet> + <opErrno>0</opErrno> + <opErrstr/> + <snapInfo> + <originVolume> + <name>snap-vol</name> + <snapCount>3</snapCount> + <snapRemaining>252</snapRemaining> + </originVolume> + <count>3</count> + <snapshots> + <snapshot> + <name>snap7</name> + <uuid>a5967958-705e-4835-9089-66e6358d7514</uuid> + <createTime>2014-12-08 17:52:50</createTime> + <volCount>1</volCount> + <snapVolume> + <name>fca1ad5a73e9447ea541a7d2d141c979</name> + <status>Started</status> + </snapVolume> + </snapshot> + <snapshot> + <name>snap6</name> + <uuid>cc8b262f-a6d5-4d41-ad5d-e5ac90d73ca4</uuid> + <createTime>2014-12-08 17:52:55</createTime> + <volCount>1</volCount> + <snapVolume> + <name>b25e8490fdef46dd82bff94b27df15a8</name> + <status>Started</status> + </snapVolume> + </snapshot> + <snapshot> + <name>snap10</name> + <uuid>8f7135a8-452b-4c14-ba7a-8bf9cbd0efb2</uuid> + <description>this is a sample description</description> + <createTime>2014-12-11 10:28:07</createTime> + <volCount>1</volCount> + <snapVolume> + <name>9368c4cd2b8d42e494c929357dd1bc44</name> + <status>Started</status> + </snapVolume> + </snapshot> + </snapshots> + </snapInfo> +</cliOutput> diff --git a/tests/glusterSnapshotStatus.xml b/tests/glusterSnapshotStatus.xml new file mode 100644 index 0000000..33efd47 --- /dev/null +++ b/tests/glusterSnapshotStatus.xml @@ -0,0 +1,160 @@ +<?xml version="1.0" encoding="UTF-8" standalone="yes"?> +<cliOutput> + <opRet>0</opRet> + <opErrno>0</opErrno> + <opErrstr>(null)</opErrstr> + <snapStatus> + <snapshots> + <snapshot> + <name>snap1_v1</name> + <uuid>8add41ae-c60c-4023-a1a6-5093a5d35603</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.42.91:/run/gluster/snaps/5eeaf23def3f446d898e1de8461a6aa7/brick1/b1</path> + <volumeGroup>mygroup</volumeGroup> + <pid>24344</pid> + <lvUsage>0.81</lvUsage> + <lvSize>500.00m</lvSize> + </brick> + </volume> + </snapshot> + <snapshot> + <name>snap2_v1</name> + <uuid>96f4f3eb-bab4-40f8-b4d7-3edbc5112b44</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.42.91:/run/gluster/snaps/20ddd7e468244bb8a46d70f98b998d62/brick1/b1</path> + <volumeGroup>mygroup</volumeGroup> + <pid>24410</pid> + <lvUsage>0.81</lvUsage> + <lvSize>500.00m</lvSize> + </brick> + </volume> + </snapshot> + <snapshot> + <name>snap3_v1</name> + <uuid>309a98d7-e650-4ecd-8d97-b0a5b744c03c</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.42.91:/run/gluster/snaps/692b1b4504304a708aaafb19e7e85118/brick1/b1</path> + <volumeGroup>mygroup</volumeGroup> + <pid>24474</pid> + <lvUsage>0.81</lvUsage> + <lvSize>500.00m</lvSize> + </brick> + </volume> + </snapshot> + <snapshot> + <name>snap7</name> + <uuid>a5967958-705e-4835-9089-66e6358d7514</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.43.63:/run/gluster/snaps/fca1ad5a73e9447ea541a7d2d141c979/brick1/b1</path> + <volumeGroup>mygroup</volumeGroup> + <pid>19342</pid> + <lvUsage>1.04</lvUsage> + <lvSize>1.00g</lvSize> + </brick> + </volume> + </snapshot> + <snapshot> + <name>snap6</name> + <uuid>cc8b262f-a6d5-4d41-ad5d-e5ac90d73ca4</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.43.63:/run/gluster/snaps/b25e8490fdef46dd82bff94b27df15a8/brick1/b1</path> + <volumeGroup>mygroup</volumeGroup> + <pid>18193</pid> + <lvUsage>1.04</lvUsage> + <lvSize>1.00g</lvSize> + </brick> + </volume> + </snapshot> + <snapshot> + <name>snap1</name> + <uuid>c561d0d0-1515-418a-a3af-2091edeed598</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.43.63:/run/gluster/snaps/30b92729cdf54f2292422dba6eb5b4df/brick1/b2</path> + <volumeGroup>mygroup</volumeGroup> + <pid>22592</pid> + <lvUsage>1.04</lvUsage> + <lvSize>1.00g</lvSize> + </brick> + </volume> + </snapshot> + <snapshot> + <name>snap2</name> + <uuid>2dd9251c-3b75-4041-99eb-a1bf8b842d88</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.43.63:/run/gluster/snaps/385499221d5d451f991224311786dd7e/brick1/b2</path> + <volumeGroup>mygroup</volumeGroup> + <pid>22653</pid> + <lvUsage>1.04</lvUsage> + <lvSize>1.00g</lvSize> + </brick> + </volume> + </snapshot> + <snapshot> + <name>snap3</name> + <uuid>11cae1f3-bfb2-4bff-945f-3201afcde6ad</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.43.63:/run/gluster/snaps/42fd5ec2d49f4571a4043ba3fd4a707b/brick1/b2</path> + <volumeGroup>mygroup</volumeGroup> + <pid>22713</pid> + <lvUsage>1.04</lvUsage> + <lvSize>1.00g</lvSize> + </brick> + </volume> + </snapshot> + <snapshot> + <name>snap4</name> + <uuid>fb4d103d-9e3d-4f03-b7a7-fecb4f4c81b3</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.43.63:/run/gluster/snaps/88044a2a0eec4e32bdde8d2fecc522e6/brick1/b2</path> + <volumeGroup>mygroup</volumeGroup> + <pid>23181</pid> + <lvUsage>1.04</lvUsage> + <lvSize>1.00g</lvSize> + </brick> + </volume> + </snapshot> + <snapshot> + <name>snap10</name> + <uuid>8f7135a8-452b-4c14-ba7a-8bf9cbd0efb2</uuid> + <volCount>1</volCount> + <volume> + <brickCount>1</brickCount> + <brick> + <path>10.70.43.63:/run/gluster/snaps/9368c4cd2b8d42e494c929357dd1bc44/brick1/b1</path> + <volumeGroup>mygroup</volumeGroup> + <pid>16298</pid> + <lvUsage>1.04</lvUsage> + <lvSize>1.00g</lvSize> + </brick> + </volume> + </snapshot> + </snapshots> + </snapStatus> +</cliOutput> diff --git a/tests/glusterTestData.py b/tests/glusterTestData.py index 7622f10..af7ff15 100644 --- a/tests/glusterTestData.py +++ b/tests/glusterTestData.py @@ -809,3 +809,150 @@ 'bricks': ['bricknode1:/gfs/b3'] } } + +GLUSTER_SNAPSHOT_STATUS = { + 'snapshots': [ + {'name': 'snap1_v1', + 'uuid': '8add41ae-c60c-4023-a1a6-5093a5d35603', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '500.00m', + 'lvUsage': '0.81', + 'path': '10.70.42.91:/run/gluster/snaps/' + '5eeaf23def3f446d898e1de8461a6aa7/brick1/b1', + 'pid': '24344', + 'volumeGroup': 'mygroup'}]}]}, + {'name': 'snap2_v1', + 'uuid': '96f4f3eb-bab4-40f8-b4d7-3edbc5112b44', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '500.00m', + 'lvUsage': '0.81', + 'path': '10.70.42.91:/run/gluster/snaps/' + '20ddd7e468244bb8a46d70f98b998d62/brick1/b1', + 'pid': '24410', + 'volumeGroup': 'mygroup'}]}]}, + {'name': 'snap3_v1', + 'uuid': '309a98d7-e650-4ecd-8d97-b0a5b744c03c', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '500.00m', + 'lvUsage': '0.81', + 'path': '10.70.42.91:/run/gluster/snaps/' + '692b1b4504304a708aaafb19e7e85118/brick1/b1', + 'pid': '24474', + 'volumeGroup': 'mygroup'}]}]}, + {'name': 'snap7', + 'uuid': 'a5967958-705e-4835-9089-66e6358d7514', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '1.00g', + 'lvUsage': '1.04', + 'path': '10.70.43.63:/run/gluster/snaps/' + 'fca1ad5a73e9447ea541a7d2d141c979/brick1/b1', + 'pid': '19342', + 'volumeGroup': 'mygroup'}]}]}, + {'name': 'snap6', + 'uuid': 'cc8b262f-a6d5-4d41-ad5d-e5ac90d73ca4', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '1.00g', + 'lvUsage': '1.04', + 'path': '10.70.43.63:/run/gluster/snaps/' + 'b25e8490fdef46dd82bff94b27df15a8/brick1/b1', + 'pid': '18193', + 'volumeGroup': 'mygroup'}]}]}, + {'name': 'snap1', + 'uuid': 'c561d0d0-1515-418a-a3af-2091edeed598', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '1.00g', + 'lvUsage': '1.04', + 'path': '10.70.43.63:/run/gluster/snaps/' + '30b92729cdf54f2292422dba6eb5b4df/brick1/b2', + 'pid': '22592', + 'volumeGroup': 'mygroup'}]}]}, + {'name': 'snap2', + 'uuid': '2dd9251c-3b75-4041-99eb-a1bf8b842d88', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '1.00g', + 'lvUsage': '1.04', + 'path': '10.70.43.63:/run/gluster/snaps/' + '385499221d5d451f991224311786dd7e/brick1/b2', + 'pid': '22653', + 'volumeGroup': 'mygroup'}]}]}, + {'name': 'snap3', + 'uuid': '11cae1f3-bfb2-4bff-945f-3201afcde6ad', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '1.00g', + 'lvUsage': '1.04', + 'path': '10.70.43.63:/run/gluster/snaps/' + '42fd5ec2d49f4571a4043ba3fd4a707b/brick1/b2', + 'pid': '22713', + 'volumeGroup': 'mygroup'}]}]}, + {'name': 'snap4', + 'uuid': 'fb4d103d-9e3d-4f03-b7a7-fecb4f4c81b3', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '1.00g', + 'lvUsage': '1.04', + 'path': '10.70.43.63:/run/gluster/snaps/' + '88044a2a0eec4e32bdde8d2fecc522e6/brick1/b2', + 'pid': '23181', + 'volumeGroup': 'mygroup'}]}]}, + {'name': 'snap10', + 'uuid': '8f7135a8-452b-4c14-ba7a-8bf9cbd0efb2', + 'volCount': '1', + 'volumes': [{ + 'brickCount': '1', + 'bricks': [{'lvSize': '1.00g', + 'lvUsage': '1.04', + 'path': '10.70.43.63:/run/gluster/snaps/' + '9368c4cd2b8d42e494c929357dd1bc44/brick1/b1', + 'pid': '16298', + 'volumeGroup': 'mygroup'}]}]} + ] +} + +GLUSTER_SNAPSHOT_INFO = { + 'volumeSnapInfo': { + 'originVolume': {'name': 'snap-vol', + 'snapCount': '3', + 'snapRemaining': '252'}, + 'snapshots': [{'createTime': '2014-12-08 17:52:50', + 'description': '', + 'name': 'snap7', + 'snapVolumes': [{ + 'name': 'fca1ad5a73e9447ea541a7d2d141c979', + 'status': 'Started'}], + 'uuid': 'a5967958-705e-4835-9089-66e6358d7514', + 'volCount': '1'}, + {'createTime': '2014-12-08 17:52:55', + 'description': '', + 'name': 'snap6', + 'snapVolumes': [{ + 'name': 'b25e8490fdef46dd82bff94b27df15a8', + 'status': 'Started'}], + 'uuid': 'cc8b262f-a6d5-4d41-ad5d-e5ac90d73ca4', + 'volCount': '1'}, + {'createTime': '2014-12-11 10:28:07', + 'description': 'this is a sample description', + 'name': 'snap10', + 'snapVolumes': [{ + 'name': '9368c4cd2b8d42e494c929357dd1bc44', + 'status': 'Started'}], + 'uuid': '8f7135a8-452b-4c14-ba7a-8bf9cbd0efb2', + 'volCount': '1'}] + } +} diff --git a/tests/gluster_cli_tests.py b/tests/gluster_cli_tests.py index 0410f8d..252f62b 100644 --- a/tests/gluster_cli_tests.py +++ b/tests/gluster_cli_tests.py @@ -1126,3 +1126,17 @@ tree = etree.fromstring(out) status = gcli._parseVolumeTasks(tree) self.assertEquals(status, glusterTestData.GLUSTER_VOLUME_TASKS) + + def test_parseSnapshotStatus(self): + with open("glusterSnapshotStatus.xml") as f: + out = f.read() + tree = etree.fromstring(out) + status = gcli._parseSnapshotStatus(tree) + self.assertEquals(status, glusterTestData.GLUSTER_SNAPSHOT_STATUS) + + def test_parseSnapshotInfo(self): + with open("glusterSnapshotInfo.xml") as f: + out = f.read() + tree = etree.fromstring(out) + status = gcli._parseSnapshotInfo(tree) + self.assertEquals(status, glusterTestData.GLUSTER_SNAPSHOT_INFO) diff --git a/vdsm.spec.in b/vdsm.spec.in index 80bf8d9..26b0c41 100644 --- a/vdsm.spec.in +++ b/vdsm.spec.in @@ -1328,6 +1328,8 @@ %{_datadir}/%{vdsm_name}/tests/toolTests_qemu_ssl.conf %{_datadir}/%{vdsm_name}/tests/toolTests_vdsm_no_ssl.conf %{_datadir}/%{vdsm_name}/tests/toolTests_vdsm_ssl.conf +%{_datadir}/%{vdsm_name}/tests/glusterSnapshotInfo.xml +%{_datadir}/%{vdsm_name}/tests/glusterSnapshotStatus.xml %{_datadir}/%{vdsm_name}/tests/glusterVolumeProfileInfo.xml %{_datadir}/%{vdsm_name}/tests/glusterVolumeProfileInfoNfs.xml %{_datadir}/%{vdsm_name}/tests/glusterVolumeRebalanceStatus.xml diff --git a/vdsm/gluster/api.py b/vdsm/gluster/api.py index f9fa991..d064c30 100644 --- a/vdsm/gluster/api.py +++ b/vdsm/gluster/api.py @@ -336,6 +336,14 @@ def snapshotDelete(self, snapName=None, volumeName=None): self.svdsmProxy.glusterSnapshotDelete(snapName, volumeName) + @exportAsVerb + def snapshotStatus(self, snapName=None, volumeName=None): + return self.svdsmProxy.glusterSnapshotStatus(snapName, volumeName) + + @exportAsVerb + def snapshotInfo(self, volumeName): + return self.svdsmProxy.glusterSnapshotInfo(volumeName) + def getGlusterMethods(gluster): l = [] diff --git a/vdsm/gluster/apiwrapper.py b/vdsm/gluster/apiwrapper.py index 40b05c1..44cc1cd 100644 --- a/vdsm/gluster/apiwrapper.py +++ b/vdsm/gluster/apiwrapper.py @@ -190,3 +190,9 @@ def delete(self, snapName=None, volumeName=None): return self._gluster.snapshotDelete(snapName, volumeName) + + def status(self, snapName=None, volumeName=None): + return self._gluster.snapshotStatus(snapName, volumeName) + + def info(self, volumeName): + return self._gluster.snapshotInfo(volumeName) diff --git a/vdsm/gluster/exception.py b/vdsm/gluster/exception.py index 7e4eec3..ac51e3b 100644 --- a/vdsm/gluster/exception.py +++ b/vdsm/gluster/exception.py @@ -524,3 +524,13 @@ GlusterSnapshotException): code = 4702 message = "Snapshot delete failed" + + +class GlusterSnapshotStatusFailedException(GlusterSnapshotException): + code = 4707 + message = "Snapshot status failed" + + +class GlusterSnapshotInfoFailedException(GlusterSnapshotException): + code = 4710 + message = "Snapshot Info failed" diff --git a/vdsm/rpc/vdsmapi-gluster-schema.json b/vdsm/rpc/vdsmapi-gluster-schema.json index 297c251..478b526 100644 --- a/vdsm/rpc/vdsmapi-gluster-schema.json +++ b/vdsm/rpc/vdsmapi-gluster-schema.json @@ -1289,3 +1289,158 @@ {'command': {'class': 'GlusterSnapshot', 'name': 'delete'}, 'data': {'*snapName': 'str', '*volumeName': 'str'}, 'returns': 'bool'} + +## +# @SnapBrickDetail: +# +# Brick detail related to snapshot. +# +# @path: path of the brick +# +# @volumeGroup: volumeGroup of the brick +# +# @pid: pid of the brick process +# +# @lvUsage: lv usage of the brick +# +# @lvSize: size of the lv +# +# Since: 4.17.0 +## +#{'type': 'SnapBrickDetail', +# 'data': {'path': 'str', 'volumeGroup': 'str', 'pid': 'int', +# 'lvUsage': 'str', 'lvSize': 'str'}} + +## +# @SnapVolumeDetail: +# +# volume detail related to snapshot. +# +# @brickcount: number of bricks +# +# @bricks: details related to bricks +# +# Since: 4.17.0 +## +{'type': 'SnapVolumeDetail', + 'data': {'brickCount': 'int', 'bricks': ['snapBrickDetail']}} + +## +# @SnapshotStatus: +# +# status of snapshot. +# +# @name: name of the snapshot +# +# @uuid: uuid of the snapshot +# +# @volCount: number of volume +# +# @volumes: list of detail of volumes +# +# Since: 4.17.0 +## +{'type': 'SnapshotStatus', + 'data': {'name': 'str', 'uuid': 'UUID', 'volCount': 'int', 'volumes': ['SnapVolumeDetail']}} + +## +# @GlusterSnapshot.status: +# +# Snapshot status +# +# @snapName: #optional Gluster volume snapshot name +# +# @volumeName: #optional Gluster volume name +# +# @snapshots: list of snapshot status +# +# Returns: +# Volume snapshot status +# +# Since: 4.17.0 +## +{'command': {'class': 'GlusterSnapshot', 'name': 'status'}, + 'data': {'*snapName': 'str', '*volumeName': 'str'}, + 'returns': ['SnapshotStatus']}} + +## +# @SnapVolume: +# +# status info of snapshot volume +# +# @name: name of the snapshot +# +# @status: status of the snapshot +# +# Since: 4.17.0 +## +{'type': 'SnapVolume', + 'data': {'name': 'str', 'status': 'str'}} + +## +# @SnapInfo: +# +# Info about the snapshot. +# +# @createTime: creation time of the snapshot +# +# @name: name of the snapshot +# +# @uuid: uuid of the snapshot +# +# @volCount: number of volumes +# +# @snapVolumes: list of snapshot volumes +# +# Since: 4.17.0 +## +{'type': 'SnapshotInfoList', + 'data': {'createTime': 'str', 'name': 'str', 'uuid': 'UUID', 'description': 'str', 'volCount': 'int', 'snapVolumes': ['SnapVolume']}} + +## +# @OriginVolumeInfo: +# +# info about origin volume. +# +# @name: name of the snapshot +# +# @snapCount: number of snaps take for the volume +# +# @snapRemaining: number of snaps remaining for the volume +# +# Since: 4.17.0 +## +{'type': 'OriginVolumeInfo', + 'data': {'name': 'str', 'snapCount': 'int', 'snapRemaining': 'int'}} + + +## +# @SnapshotInfo: +# +# info about volume snapshots. +# +# @originVolume: Info about the origin volume +# +# @snapshots: Info about the snapshots. +# +# Since: 4.17.0 +## +{'type': 'SnapshotInfo', + 'data': {'originVolume': 'OriginVolumeInfo', 'snapshots': ['SnapInfo']}} + + +## +# @GlusterSnapshot.info: +# +# Snapshot info +# +# @volumeName: optional Gluster volume name +# +# Returns: +# Volume snapshot info +# +# Since: 4.17.0 +## +{'command': {'class': 'GlusterSnapshot', 'name': 'info'}, + 'data': {'volumeName': 'str'}, + 'returns': 'SnapshotInfo'} -- To view, visit http://gerrit.ovirt.org/36087 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I06945d6781432b7fb40e417dd21c0ecf107de132 Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Darshan N <dnara...@redhat.com> _______________________________________________ vdsm-patches mailing list vdsm-patches@lists.fedorahosted.org https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches