mox.ReplayAll()
- drv.delete_volume(volume)
+ drv.get_volume_stats()
+ self.assertEqual(drv._stats['total_capacity_gb'], 30.0)
+ self.assertEqual(drv._stats['free_capacity_gb'], 5.0)
mox.VerifyAll()
+
+ def test_get_volume_stats(self):
+ """get_volume_stats must fill the correct values"""
+ mox = self._mox
+ drv = self._driver
+
+ drv._mounted_shares = [self.TEST_NFS_EXPORT1, self.TEST_NFS_EXPORT2]
+
+ mox.StubOutWithMock(drv, '_ensure_shares_mounted')
+ mox.StubOutWithMock(drv, '_get_available_capacity')
+
+ drv._ensure_shares_mounted()
+
+ drv._get_available_capacity(self.TEST_NFS_EXPORT1).\
+ AndReturn((2 * self.ONE_GB_IN_BYTES, 10 * self.ONE_GB_IN_BYTES))
+ drv._get_available_capacity(self.TEST_NFS_EXPORT2).\
+ AndReturn((3 * self.ONE_GB_IN_BYTES, 20 * self.ONE_GB_IN_BYTES))
+
+ mox.ReplayAll()
+
+ drv.get_volume_stats()
+ self.assertEqual(drv._stats['total_capacity_gb'], 30.0)
+ self.assertEqual(drv._stats['free_capacity_gb'], 5.0)
+
+ mox.VerifyAll()
return self.stats
+ def _update_volume_stats(self, client):
+ # const to convert MiB to GB
+ const = 0.0009765625
+
+ # storage_protocol and volume_backend_name are
+ # set in the child classes
+ stats = {'driver_version': '1.0',
+ 'free_capacity_gb': 'unknown',
+ 'reserved_percentage': 0,
+ 'storage_protocol': None,
+ 'total_capacity_gb': 'unknown',
+ 'vendor_name': 'Hewlett-Packard',
+ 'volume_backend_name': None}
++
++ try:
++ cpg = client.getCPG(self.config.hp3par_cpg)
++ if 'limitMiB' not in cpg['SDGrowth']:
++ total_capacity = 'infinite'
++ free_capacity = 'infinite'
++ else:
++ total_capacity = int(cpg['SDGrowth']['limitMiB'] * const)
++ free_capacity = int((cpg['SDGrowth']['limitMiB'] -
++ cpg['UsrUsage']['usedMiB']) * const)
++
++ stats['total_capacity_gb'] = total_capacity
++ stats['free_capacity_gb'] = free_capacity
++ except hpexceptions.HTTPNotFound:
++ err = (_("CPG (%s) doesn't exist on array")
++ % self.config.hp3par_cpg)
++ LOG.error(err)
++ raise exception.InvalidInput(reason=err)
++
++ self.stats = stats
++
+ def _update_volume_stats(self, client):
+
+ # storage_protocol and volume_backend_name are
+ # set in the child classes
+ stats = {'driver_version': '1.0',
+ 'free_capacity_gb': 'unknown',
+ 'reserved_percentage': 0,
+ 'storage_protocol': None,
+ 'total_capacity_gb': 'unknown',
+ 'vendor_name': 'Hewlett-Packard',
+ 'volume_backend_name': None}
try:
cpg = client.getCPG(self.config.hp3par_cpg)
context = context.elevated()
snapshot_ref = self.db.snapshot_get(context, snapshot_id)
LOG.info(_("snapshot %s: deleting"), snapshot_ref['name'])
+ self._notify_about_snapshot_usage(
+ context, snapshot_ref, "delete.start")
+
+ if context.project_id != snapshot_ref['project_id']:
+ project_id = snapshot_ref['project_id']
+ else:
+ project_id = context.project_id
+ if context.project_id != snapshot_ref['project_id']:
+ project_id = snapshot_ref['project_id']
+ else:
+ project_id = context.project_id
+
try:
LOG.debug(_("snapshot %s: deleting"), snapshot_ref['name'])
self.driver.delete_snapshot(snapshot_ref)