Merge "HPE 3par: Update the calculation of free_capacity"
This commit is contained in:
commit
a1fb7da213
@ -8174,7 +8174,7 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
mock_client.getCPGAvailableSpace.return_value = {
|
mock_client.getCPGAvailableSpace.return_value = {
|
||||||
"capacityEfficiency": {u'compaction': 594.4},
|
"capacityEfficiency": {u'compaction': 594.4},
|
||||||
"rawFreeMiB": 1024.0 * 6,
|
"rawFreeMiB": 1024.0 * 6,
|
||||||
"usableFreeMiB": 1024.0 * 3
|
"usableFreeMiB": 1024.0 * 79
|
||||||
}
|
}
|
||||||
stat_capabilities = {
|
stat_capabilities = {
|
||||||
THROUGHPUT: 0,
|
THROUGHPUT: 0,
|
||||||
@ -8201,9 +8201,9 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
self.assertFalse(stats['pools'][0]['QoS_support'])
|
self.assertFalse(stats['pools'][0]['QoS_support'])
|
||||||
self.assertEqual(86.0,
|
self.assertEqual(86.0,
|
||||||
stats['pools'][0]['provisioned_capacity_gb'])
|
stats['pools'][0]['provisioned_capacity_gb'])
|
||||||
self.assertEqual(24.0, stats['pools'][0]['total_capacity_gb'])
|
self.assertEqual(100.0, stats['pools'][0]['total_capacity_gb'])
|
||||||
self.assertEqual(3.0, stats['pools'][0]['free_capacity_gb'])
|
self.assertEqual(14.0, stats['pools'][0]['free_capacity_gb'])
|
||||||
self.assertEqual(87.5, stats['pools'][0]['capacity_utilization'])
|
self.assertEqual(86.0, stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
self.assertEqual('up', stats['pools'][0]['backend_state'])
|
self.assertEqual('up', stats['pools'][0]['backend_state'])
|
||||||
self.assertEqual(GOODNESS_FUNCTION,
|
self.assertEqual(GOODNESS_FUNCTION,
|
||||||
@ -8241,9 +8241,9 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
self.assertFalse(stats['pools'][0]['QoS_support'])
|
self.assertFalse(stats['pools'][0]['QoS_support'])
|
||||||
self.assertEqual(86.0,
|
self.assertEqual(86.0,
|
||||||
stats['pools'][0]['provisioned_capacity_gb'])
|
stats['pools'][0]['provisioned_capacity_gb'])
|
||||||
self.assertEqual(24.0, stats['pools'][0]['total_capacity_gb'])
|
self.assertEqual(100.0, stats['pools'][0]['total_capacity_gb'])
|
||||||
self.assertEqual(3.0, stats['pools'][0]['free_capacity_gb'])
|
self.assertEqual(14.0, stats['pools'][0]['free_capacity_gb'])
|
||||||
self.assertEqual(87.5, stats['pools'][0]['capacity_utilization'])
|
self.assertEqual(86.0, stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
self.assertEqual(GOODNESS_FUNCTION,
|
self.assertEqual(GOODNESS_FUNCTION,
|
||||||
stats['pools'][0]['goodness_function'])
|
stats['pools'][0]['goodness_function'])
|
||||||
@ -8263,7 +8263,7 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
stats['pools'][0][AVG_BUSY_PERC])
|
stats['pools'][0][AVG_BUSY_PERC])
|
||||||
|
|
||||||
cpg2 = self.cpgs[0].copy()
|
cpg2 = self.cpgs[0].copy()
|
||||||
cpg2.update({'SDGrowth': {'limitMiB': 8192}})
|
cpg2.update({'SDGrowth': {'limitMiB': 204800}})
|
||||||
mock_client.getCPG.return_value = cpg2
|
mock_client.getCPG.return_value = cpg2
|
||||||
|
|
||||||
stats = self.driver.get_volume_stats(True)
|
stats = self.driver.get_volume_stats(True)
|
||||||
@ -8272,22 +8272,16 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
||||||
self.assertTrue(stats['pools'][0]['thick_provisioning_support'])
|
self.assertTrue(stats['pools'][0]['thick_provisioning_support'])
|
||||||
self.assertFalse(stats['pools'][0]['QoS_support'])
|
self.assertFalse(stats['pools'][0]['QoS_support'])
|
||||||
total_capacity_gb = 8192 * const
|
total_capacity_gb = 200 * 1024 * const
|
||||||
self.assertEqual(total_capacity_gb,
|
self.assertEqual(total_capacity_gb,
|
||||||
stats['pools'][0]['total_capacity_gb'])
|
stats['pools'][0]['total_capacity_gb'])
|
||||||
free_capacity_gb = int(
|
free_capacity_gb = 114
|
||||||
(8192 - (self.cpgs[0]['UsrUsage']['usedMiB'] +
|
|
||||||
self.cpgs[0]['SDUsage']['usedMiB'])) * const)
|
|
||||||
self.assertEqual(free_capacity_gb,
|
self.assertEqual(free_capacity_gb,
|
||||||
stats['pools'][0]['free_capacity_gb'])
|
stats['pools'][0]['free_capacity_gb'])
|
||||||
provisioned_capacity_gb = int(
|
provisioned_capacity_gb = 86
|
||||||
(self.cpgs[0]['UsrUsage']['totalMiB'] +
|
|
||||||
self.cpgs[0]['SAUsage']['totalMiB'] +
|
|
||||||
self.cpgs[0]['SDUsage']['totalMiB']) * const)
|
|
||||||
self.assertEqual(provisioned_capacity_gb,
|
self.assertEqual(provisioned_capacity_gb,
|
||||||
stats['pools'][0]['provisioned_capacity_gb'])
|
stats['pools'][0]['provisioned_capacity_gb'])
|
||||||
cap_util = (float(total_capacity_gb - free_capacity_gb) /
|
cap_util = 43.0
|
||||||
float(total_capacity_gb)) * 100
|
|
||||||
self.assertEqual(cap_util,
|
self.assertEqual(cap_util,
|
||||||
stats['pools'][0]['capacity_utilization'])
|
stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
@ -8336,7 +8330,7 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
mock_client.getCPGAvailableSpace.return_value = {
|
mock_client.getCPGAvailableSpace.return_value = {
|
||||||
"capacityEfficiency": {u'compaction': 594.4},
|
"capacityEfficiency": {u'compaction': 594.4},
|
||||||
"rawFreeMiB": 1024.0 * 6,
|
"rawFreeMiB": 1024.0 * 6,
|
||||||
"usableFreeMiB": 1024.0 * 3
|
"usableFreeMiB": 1024.0 * 79
|
||||||
}
|
}
|
||||||
|
|
||||||
with mock.patch.object(hpecommon.HPE3PARCommon,
|
with mock.patch.object(hpecommon.HPE3PARCommon,
|
||||||
@ -8349,9 +8343,9 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
self.assertEqual('12345', stats['array_id'])
|
self.assertEqual('12345', stats['array_id'])
|
||||||
self.assertFalse(stats['pools'][0]['thin_provisioning_support'])
|
self.assertFalse(stats['pools'][0]['thin_provisioning_support'])
|
||||||
self.assertTrue(stats['pools'][0]['QoS_support'])
|
self.assertTrue(stats['pools'][0]['QoS_support'])
|
||||||
self.assertEqual(24.0, stats['pools'][0]['total_capacity_gb'])
|
self.assertEqual(100.0, stats['pools'][0]['total_capacity_gb'])
|
||||||
self.assertEqual(3.0, stats['pools'][0]['free_capacity_gb'])
|
self.assertEqual(14.0, stats['pools'][0]['free_capacity_gb'])
|
||||||
self.assertEqual(87.5, stats['pools'][0]['capacity_utilization'])
|
self.assertEqual(86.0, stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
self.assertEqual(GOODNESS_FUNCTION,
|
self.assertEqual(GOODNESS_FUNCTION,
|
||||||
stats['pools'][0]['goodness_function'])
|
stats['pools'][0]['goodness_function'])
|
||||||
@ -8392,7 +8386,7 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
mock_client.getCPGAvailableSpace.return_value = {
|
mock_client.getCPGAvailableSpace.return_value = {
|
||||||
"capacityEfficiency": {u'compaction': 594.4},
|
"capacityEfficiency": {u'compaction': 594.4},
|
||||||
"rawFreeMiB": 1024.0 * 6,
|
"rawFreeMiB": 1024.0 * 6,
|
||||||
"usableFreeMiB": 1024.0 * 3
|
"usableFreeMiB": 1024.0 * 79
|
||||||
}
|
}
|
||||||
|
|
||||||
with mock.patch.object(hpecommon.HPE3PARCommon,
|
with mock.patch.object(hpecommon.HPE3PARCommon,
|
||||||
@ -8403,9 +8397,9 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
stats = self.driver.get_volume_stats(True)
|
stats = self.driver.get_volume_stats(True)
|
||||||
self.assertEqual('FC', stats['storage_protocol'])
|
self.assertEqual('FC', stats['storage_protocol'])
|
||||||
self.assertEqual('12345', stats['array_id'])
|
self.assertEqual('12345', stats['array_id'])
|
||||||
self.assertEqual(24.0, stats['pools'][0]['total_capacity_gb'])
|
self.assertEqual(100.0, stats['pools'][0]['total_capacity_gb'])
|
||||||
self.assertEqual(3.0, stats['pools'][0]['free_capacity_gb'])
|
self.assertEqual(14.0, stats['pools'][0]['free_capacity_gb'])
|
||||||
self.assertEqual(87.5, stats['pools'][0]['capacity_utilization'])
|
self.assertEqual(86.0, stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
self.assertEqual(GOODNESS_FUNCTION,
|
self.assertEqual(GOODNESS_FUNCTION,
|
||||||
stats['pools'][0]['goodness_function'])
|
stats['pools'][0]['goodness_function'])
|
||||||
@ -8452,7 +8446,7 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
mock_client.getCPGAvailableSpace.return_value = {
|
mock_client.getCPGAvailableSpace.return_value = {
|
||||||
"capacityEfficiency": {u'compaction': 594.4},
|
"capacityEfficiency": {u'compaction': 594.4},
|
||||||
"rawFreeMiB": 1024.0 * 6,
|
"rawFreeMiB": 1024.0 * 6,
|
||||||
"usableFreeMiB": 1024.0 * 3
|
"usableFreeMiB": 1024.0 * 79
|
||||||
}
|
}
|
||||||
|
|
||||||
with mock.patch.object(hpecommon.HPE3PARCommon,
|
with mock.patch.object(hpecommon.HPE3PARCommon,
|
||||||
@ -8464,9 +8458,9 @@ class TestHPE3PARFCDriver(HPE3PARBaseDriver):
|
|||||||
self.assertEqual('12345', stats['array_id'])
|
self.assertEqual('12345', stats['array_id'])
|
||||||
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
||||||
self.assertTrue(stats['pools'][0]['QoS_support'])
|
self.assertTrue(stats['pools'][0]['QoS_support'])
|
||||||
self.assertEqual(24.0, stats['pools'][0]['total_capacity_gb'])
|
self.assertEqual(100.0, stats['pools'][0]['total_capacity_gb'])
|
||||||
self.assertEqual(3.0, stats['pools'][0]['free_capacity_gb'])
|
self.assertEqual(14.0, stats['pools'][0]['free_capacity_gb'])
|
||||||
self.assertEqual(87.5, stats['pools'][0]['capacity_utilization'])
|
self.assertEqual(86.0, stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
self.assertEqual(GOODNESS_FUNCTION,
|
self.assertEqual(GOODNESS_FUNCTION,
|
||||||
stats['pools'][0]['goodness_function'])
|
stats['pools'][0]['goodness_function'])
|
||||||
@ -9614,7 +9608,7 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
mock_client.getCPGAvailableSpace.return_value = {
|
mock_client.getCPGAvailableSpace.return_value = {
|
||||||
"capacityEfficiency": {u'compaction': 594.4},
|
"capacityEfficiency": {u'compaction': 594.4},
|
||||||
"rawFreeMiB": 1024.0 * 6,
|
"rawFreeMiB": 1024.0 * 6,
|
||||||
"usableFreeMiB": 1024.0 * 3
|
"usableFreeMiB": 1024.0 * 79
|
||||||
}
|
}
|
||||||
stat_capabilities = {
|
stat_capabilities = {
|
||||||
THROUGHPUT: 0,
|
THROUGHPUT: 0,
|
||||||
@ -9636,11 +9630,11 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
self.assertEqual('12345', stats['array_id'])
|
self.assertEqual('12345', stats['array_id'])
|
||||||
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
||||||
self.assertTrue(stats['pools'][0]['thick_provisioning_support'])
|
self.assertTrue(stats['pools'][0]['thick_provisioning_support'])
|
||||||
self.assertEqual(24.0, stats['pools'][0]['total_capacity_gb'])
|
self.assertEqual(100.0, stats['pools'][0]['total_capacity_gb'])
|
||||||
self.assertEqual(3.0, stats['pools'][0]['free_capacity_gb'])
|
self.assertEqual(14.0, stats['pools'][0]['free_capacity_gb'])
|
||||||
self.assertEqual(86.0,
|
self.assertEqual(86.0,
|
||||||
stats['pools'][0]['provisioned_capacity_gb'])
|
stats['pools'][0]['provisioned_capacity_gb'])
|
||||||
self.assertEqual(87.5, stats['pools'][0]['capacity_utilization'])
|
self.assertEqual(86.0, stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
self.assertEqual(GOODNESS_FUNCTION,
|
self.assertEqual(GOODNESS_FUNCTION,
|
||||||
stats['pools'][0]['goodness_function'])
|
stats['pools'][0]['goodness_function'])
|
||||||
@ -9671,7 +9665,7 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
mock_client.assert_has_calls(expected)
|
mock_client.assert_has_calls(expected)
|
||||||
|
|
||||||
cpg2 = self.cpgs[0].copy()
|
cpg2 = self.cpgs[0].copy()
|
||||||
cpg2.update({'SDGrowth': {'limitMiB': 8192}})
|
cpg2.update({'SDGrowth': {'limitMiB': 204800}})
|
||||||
mock_client.getCPG.return_value = cpg2
|
mock_client.getCPG.return_value = cpg2
|
||||||
|
|
||||||
stats = self.driver.get_volume_stats(True)
|
stats = self.driver.get_volume_stats(True)
|
||||||
@ -9679,22 +9673,16 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
self.assertEqual('12345', stats['array_id'])
|
self.assertEqual('12345', stats['array_id'])
|
||||||
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
||||||
self.assertTrue(stats['pools'][0]['thick_provisioning_support'])
|
self.assertTrue(stats['pools'][0]['thick_provisioning_support'])
|
||||||
total_capacity_gb = 8192 * const
|
total_capacity_gb = 200 * 1024 * const
|
||||||
self.assertEqual(total_capacity_gb,
|
self.assertEqual(total_capacity_gb,
|
||||||
stats['pools'][0]['total_capacity_gb'])
|
stats['pools'][0]['total_capacity_gb'])
|
||||||
free_capacity_gb = int(
|
free_capacity_gb = 114
|
||||||
(8192 - (self.cpgs[0]['UsrUsage']['usedMiB'] +
|
|
||||||
self.cpgs[0]['SDUsage']['usedMiB'])) * const)
|
|
||||||
self.assertEqual(free_capacity_gb,
|
self.assertEqual(free_capacity_gb,
|
||||||
stats['pools'][0]['free_capacity_gb'])
|
stats['pools'][0]['free_capacity_gb'])
|
||||||
cap_util = (float(total_capacity_gb - free_capacity_gb) /
|
cap_util = 43.0
|
||||||
float(total_capacity_gb)) * 100
|
|
||||||
self.assertEqual(cap_util,
|
self.assertEqual(cap_util,
|
||||||
stats['pools'][0]['capacity_utilization'])
|
stats['pools'][0]['capacity_utilization'])
|
||||||
provisioned_capacity_gb = int(
|
provisioned_capacity_gb = 86
|
||||||
(self.cpgs[0]['UsrUsage']['totalMiB'] +
|
|
||||||
self.cpgs[0]['SAUsage']['totalMiB'] +
|
|
||||||
self.cpgs[0]['SDUsage']['totalMiB']) * const)
|
|
||||||
self.assertEqual(provisioned_capacity_gb,
|
self.assertEqual(provisioned_capacity_gb,
|
||||||
stats['pools'][0]['provisioned_capacity_gb'])
|
stats['pools'][0]['provisioned_capacity_gb'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
@ -9734,7 +9722,7 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
mock_client.getCPGAvailableSpace.return_value = {
|
mock_client.getCPGAvailableSpace.return_value = {
|
||||||
"capacityEfficiency": {u'compaction': 594.4},
|
"capacityEfficiency": {u'compaction': 594.4},
|
||||||
"rawFreeMiB": 1024.0 * 6,
|
"rawFreeMiB": 1024.0 * 6,
|
||||||
"usableFreeMiB": 1024.0 * 3
|
"usableFreeMiB": 1024.0 * 79
|
||||||
}
|
}
|
||||||
|
|
||||||
with mock.patch.object(hpecommon.HPE3PARCommon,
|
with mock.patch.object(hpecommon.HPE3PARCommon,
|
||||||
@ -9745,9 +9733,9 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
stats = self.driver.get_volume_stats(True)
|
stats = self.driver.get_volume_stats(True)
|
||||||
self.assertEqual('iSCSI', stats['storage_protocol'])
|
self.assertEqual('iSCSI', stats['storage_protocol'])
|
||||||
self.assertEqual('12345', stats['array_id'])
|
self.assertEqual('12345', stats['array_id'])
|
||||||
self.assertEqual(24.0, stats['pools'][0]['total_capacity_gb'])
|
self.assertEqual(100.0, stats['pools'][0]['total_capacity_gb'])
|
||||||
self.assertEqual(3.0, stats['pools'][0]['free_capacity_gb'])
|
self.assertEqual(14.0, stats['pools'][0]['free_capacity_gb'])
|
||||||
self.assertEqual(87.5, stats['pools'][0]['capacity_utilization'])
|
self.assertEqual(86.0, stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
self.assertEqual(GOODNESS_FUNCTION,
|
self.assertEqual(GOODNESS_FUNCTION,
|
||||||
stats['pools'][0]['goodness_function'])
|
stats['pools'][0]['goodness_function'])
|
||||||
@ -9788,7 +9776,7 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
mock_client.getCPGAvailableSpace.return_value = {
|
mock_client.getCPGAvailableSpace.return_value = {
|
||||||
"capacityEfficiency": {u'compaction': 594.4},
|
"capacityEfficiency": {u'compaction': 594.4},
|
||||||
"rawFreeMiB": 1024.0 * 6,
|
"rawFreeMiB": 1024.0 * 6,
|
||||||
"usableFreeMiB": 1024.0 * 3
|
"usableFreeMiB": 1024.0 * 79
|
||||||
}
|
}
|
||||||
|
|
||||||
with mock.patch.object(hpecommon.HPE3PARCommon,
|
with mock.patch.object(hpecommon.HPE3PARCommon,
|
||||||
@ -9799,9 +9787,9 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
stats = self.driver.get_volume_stats(True)
|
stats = self.driver.get_volume_stats(True)
|
||||||
self.assertEqual('iSCSI', stats['storage_protocol'])
|
self.assertEqual('iSCSI', stats['storage_protocol'])
|
||||||
self.assertEqual('12345', stats['array_id'])
|
self.assertEqual('12345', stats['array_id'])
|
||||||
self.assertEqual(24.0, stats['pools'][0]['total_capacity_gb'])
|
self.assertEqual(100.0, stats['pools'][0]['total_capacity_gb'])
|
||||||
self.assertEqual(3.0, stats['pools'][0]['free_capacity_gb'])
|
self.assertEqual(14.0, stats['pools'][0]['free_capacity_gb'])
|
||||||
self.assertEqual(87.5, stats['pools'][0]['capacity_utilization'])
|
self.assertEqual(86.0, stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
self.assertEqual(GOODNESS_FUNCTION,
|
self.assertEqual(GOODNESS_FUNCTION,
|
||||||
stats['pools'][0]['goodness_function'])
|
stats['pools'][0]['goodness_function'])
|
||||||
@ -9848,7 +9836,7 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
mock_client.getCPGAvailableSpace.return_value = {
|
mock_client.getCPGAvailableSpace.return_value = {
|
||||||
"capacityEfficiency": {u'compaction': 594.4},
|
"capacityEfficiency": {u'compaction': 594.4},
|
||||||
"rawFreeMiB": 1024.0 * 6,
|
"rawFreeMiB": 1024.0 * 6,
|
||||||
"usableFreeMiB": 1024.0 * 3
|
"usableFreeMiB": 1024.0 * 79
|
||||||
}
|
}
|
||||||
|
|
||||||
with mock.patch.object(hpecommon.HPE3PARCommon,
|
with mock.patch.object(hpecommon.HPE3PARCommon,
|
||||||
@ -9860,9 +9848,9 @@ class TestHPE3PARISCSIDriver(HPE3PARBaseDriver):
|
|||||||
self.assertEqual('12345', stats['array_id'])
|
self.assertEqual('12345', stats['array_id'])
|
||||||
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
self.assertTrue(stats['pools'][0]['thin_provisioning_support'])
|
||||||
self.assertTrue(stats['pools'][0]['QoS_support'])
|
self.assertTrue(stats['pools'][0]['QoS_support'])
|
||||||
self.assertEqual(24.0, stats['pools'][0]['total_capacity_gb'])
|
self.assertEqual(100.0, stats['pools'][0]['total_capacity_gb'])
|
||||||
self.assertEqual(3.0, stats['pools'][0]['free_capacity_gb'])
|
self.assertEqual(14.0, stats['pools'][0]['free_capacity_gb'])
|
||||||
self.assertEqual(87.5, stats['pools'][0]['capacity_utilization'])
|
self.assertEqual(86.0, stats['pools'][0]['capacity_utilization'])
|
||||||
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
self.assertEqual(3, stats['pools'][0]['total_volumes'])
|
||||||
self.assertEqual(GOODNESS_FUNCTION,
|
self.assertEqual(GOODNESS_FUNCTION,
|
||||||
stats['pools'][0]['goodness_function'])
|
stats['pools'][0]['goodness_function'])
|
||||||
|
@ -312,11 +312,12 @@ class HPE3PARCommon(object):
|
|||||||
4.0.22 - Fixed clone of replicated volume. Bug #2021941
|
4.0.22 - Fixed clone of replicated volume. Bug #2021941
|
||||||
4.0.23 - Fixed login/logout while accessing wsapi. Bug #2068795
|
4.0.23 - Fixed login/logout while accessing wsapi. Bug #2068795
|
||||||
4.0.24 - Fixed retype volume - thin to deco. Bug #2080927
|
4.0.24 - Fixed retype volume - thin to deco. Bug #2080927
|
||||||
|
4.0.25 - Update the calculation of free_capacity
|
||||||
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
VERSION = "4.0.24"
|
VERSION = "4.0.25"
|
||||||
|
|
||||||
stats = {}
|
stats = {}
|
||||||
|
|
||||||
@ -1749,8 +1750,6 @@ class HPE3PARCommon(object):
|
|||||||
# cpg usable free space
|
# cpg usable free space
|
||||||
cpg_avail_space = (
|
cpg_avail_space = (
|
||||||
self.client.getCPGAvailableSpace(cpg_name))
|
self.client.getCPGAvailableSpace(cpg_name))
|
||||||
free_capacity = int(
|
|
||||||
cpg_avail_space['usableFreeMiB'] * const)
|
|
||||||
# total_capacity is the best we can do for a limitless cpg
|
# total_capacity is the best we can do for a limitless cpg
|
||||||
total_capacity = int(
|
total_capacity = int(
|
||||||
(cpg['SDUsage']['usedMiB'] +
|
(cpg['SDUsage']['usedMiB'] +
|
||||||
@ -1758,16 +1757,15 @@ class HPE3PARCommon(object):
|
|||||||
cpg_avail_space['usableFreeMiB']) * const)
|
cpg_avail_space['usableFreeMiB']) * const)
|
||||||
else:
|
else:
|
||||||
total_capacity = int(cpg['SDGrowth']['limitMiB'] * const)
|
total_capacity = int(cpg['SDGrowth']['limitMiB'] * const)
|
||||||
free_capacity = int((cpg['SDGrowth']['limitMiB'] -
|
|
||||||
(cpg['UsrUsage']['usedMiB'] +
|
|
||||||
cpg['SDUsage']['usedMiB'])) * const)
|
|
||||||
capacity_utilization = (
|
|
||||||
(float(total_capacity - free_capacity) /
|
|
||||||
float(total_capacity)) * 100)
|
|
||||||
provisioned_capacity = int((cpg['UsrUsage']['totalMiB'] +
|
provisioned_capacity = int((cpg['UsrUsage']['totalMiB'] +
|
||||||
cpg['SAUsage']['totalMiB'] +
|
cpg['SAUsage']['totalMiB'] +
|
||||||
cpg['SDUsage']['totalMiB']) *
|
cpg['SDUsage']['totalMiB']) *
|
||||||
const)
|
const)
|
||||||
|
free_capacity = total_capacity - provisioned_capacity
|
||||||
|
capacity_utilization = (
|
||||||
|
(float(total_capacity - free_capacity) /
|
||||||
|
float(total_capacity)) * 100)
|
||||||
|
|
||||||
except hpeexceptions.HTTPNotFound:
|
except hpeexceptions.HTTPNotFound:
|
||||||
err = (_("CPG (%s) doesn't exist on array")
|
err = (_("CPG (%s) doesn't exist on array")
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
---
|
||||||
|
other:
|
||||||
|
- |
|
||||||
|
HPE 3PAR driver: In get_volume_stats response, updated the
|
||||||
|
logic to calculate free_capacity
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user