summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryangyan <yangyanyj@chinamobile.com>2018-05-31 14:23:44 +0800
committeryangyan <yangyanyj@chinamobile.com>2018-05-31 15:08:38 +0800
commitb81711196d43f289ee937c7d89366ae1060e31c8 (patch)
treef525647204239b0be1f90e26dbe2e2620b139f77
parentc51949312564dc95449bbffff717ae4ce5d46994 (diff)
improve code to handle scalar types
Issue-ID: VFC-926 Change-Id: I611211348bf2efe0ebfa635facc96a3f5cfdc880 Signed-off-by: yangyan <yangyanyj@chinamobile.com>
-rw-r--r--lcm/ns/vnfs/grant_vnfs.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/lcm/ns/vnfs/grant_vnfs.py b/lcm/ns/vnfs/grant_vnfs.py
index 7f2d44e5..c8611317 100644
--- a/lcm/ns/vnfs/grant_vnfs.py
+++ b/lcm/ns/vnfs/grant_vnfs.py
@@ -99,7 +99,7 @@ class GrantVnfs(object):
"numVirtualCpu": int(vdu["virtual_compute"]["virtual_cpu"]["num_virtual_cpu"])
},
"virtualMemory": {
- "virtualMemSize": int(vdu["virtual_compute"]["virtual_memory"]["virtual_mem_size"])
+ "virtualMemSize": parse_unit(vdu["virtual_compute"]["virtual_memory"]["virtual_mem_size"], "MB")
}
},
"virtualStorageDescriptor": {
@@ -113,5 +113,16 @@ class GrantVnfs(object):
def get_storage_size(self, storage_id, vnfd):
for storage in vnfd["local_storages"]:
if storage_id == storage["local_storage_id"]:
- return int(storage["properties"]["size"])
+ return parse_unit(storage["properties"]["size"], "GB")
return 0
+
+
+def parse_unit(self, val, base_unit):
+ recognized_units = ["B", "kB", "KiB", "MB", "MiB", "GB", "GiB", "TB", "TiB"]
+ units_rate = [1, 1000, 1024, 1000000, 1048576, 1000000000, 1073741824, 1000000000000, 1099511627776]
+ unit_rate_map = {unit.upper(): rate for unit, rate in zip(recognized_units, units_rate)}
+ num_unit = val.strip().split(" ")
+ if len(num_unit) != 2:
+ return val.strip()
+ num, unit = num_unit[0], num_unit[1]
+ return int(num) * unit_rate_map[unit.upper()] / unit_rate_map[base_unit.upper()]