# See the License for the specific language governing permissions and
# limitations under the License.
-import logging
import json
+import logging
-from lcm.pub.msapi import resmgr
-from lcm.pub.database.models import NfPackageModel, NfInstModel
+from lcm.pub.database.models import NfInstModel
from lcm.pub.exceptions import NSLCMException
+from lcm.pub.msapi import resmgr
+from lcm.pub.msapi.sdc_run_catalog import query_vnfpackage_by_id
from lcm.pub.utils.values import ignore_case_get
logger = logging.getLogger(__name__)
elif ignore_case_get(self.data, "removeResource"):
grant_type = "removeResource"
else:
- #raise NSLCMException("No grant resource is found.")
has_res_tpl = True
for res in ignore_case_get(self.data, grant_type):
if not vnfinsts:
raise NSLCMException("Vnfinst(%s) is not found in vnfm(%s)" % (
m_vnf_inst_id, vnfm_inst_id))
-
+
vnf_pkg_id = vnfinsts[0].package_id
- vnf_pkgs = NfPackageModel.objects.filter(nfpackageid=vnf_pkg_id)
- if not vnf_pkgs:
- raise NSLCMException("vnfpkg(%s) is not found" % vnf_pkg_id)
+ nfpackage_info = query_vnfpackage_by_id(vnf_pkg_id)
+ vnf_pkg = nfpackage_info["packageInfo"]
- vnfd = json.JSONDecoder().decode(vnf_pkgs[0].vnfdmodel)
+ vnfd = json.JSONDecoder().decode(vnf_pkg["vnfdModel"])
req_param = {
- "vnfInstanceId": m_vnf_inst_id,
- "vimId": vim_id,
+ "vnfInstanceId": m_vnf_inst_id,
+ "vimId": vim_id,
"additionalParam": additional_param,
grant_type: []
}
vdu_name = ignore_case_get(res, "vdu")
grant_res = {
"resourceDefinitionId": ignore_case_get(res, "resourceDefinitionId"),
- "type": ignore_case_get(res,"type"),
+ "type": ignore_case_get(res, "type"),
"vdu": vdu_name
}
for vdu in vnfd["vdus"]:
resourceTemplate = {
"virtualComputeDescriptor": {
"virtualCpu": {
- "numVirtualCpu": int(vdu["nfv_compute"]["num_cpus"])
+ "numVirtualCpu": int(vdu["virtual_compute"]["virtual_cpu"]["num_virtual_cpu"])
},
"virtualMemory": {
- "virtualMemSize": int(vdu["nfv_compute"]["mem_size"])
+ "virtualMemSize": parse_unit(vdu["virtual_compute"]["virtual_memory"]["virtual_mem_size"], "MB")
}
},
"virtualStorageDescriptor": {
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(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()]