import json
import logging
import uuid
+import time
from lcm.pub.database.models import NfInstModel, OOFDataModel
from lcm.pub.exceptions import NSLCMException
from lcm.pub.msapi.sdc_run_catalog import query_vnfpackage_by_id
from lcm.pub.utils.values import ignore_case_get
from lcm.pub.msapi import resmgr
+from lcm.ns_vnfs.const import SCALAR_UNIT_DICT
logger = logging.getLogger(__name__)
def exec_grant(self):
logger.debug("grant data from vnfm:%s", self.data)
- if isinstance(self.data, (unicode, str)):
+ if isinstance(self.data, str):
self.data = json.JSONDecoder().decode(self.data)
has_res_tpl = False
grant_type = None
+ action_type = ignore_case_get(self.data, "operation")
vimConnections = []
if ignore_case_get(self.data, "addResources"):
grant_type = "addResources"
"vimConnections": vimConnections
}
- offs = OOFDataModel.objects.filter(service_resource_id=ignore_case_get(self.data, "vnfInstanceId"))
- if offs.exists():
- vdu_info = json.loads(offs[0].vdu_info)
- grant_resp['vimAssets'] = {'computeResourceFlavours': []}
- for vdu in vdu_info:
- grant_resp['vimAssets']['computeResourceFlavours'].append({
- 'vimConnectionId': offs[0].vim_id,
- 'resourceProviderId': vdu.get("vduName"),
- 'vnfdVirtualComputeDescId': None, # TODO: required
- 'vimFlavourId': vdu.get("flavorName")
- })
- # grant_resp['additionalparams'][off.vim_id] = off.directive
+ logger.debug("action_type=%s" % action_type)
+ if action_type == 'INSTANTIATE':
+ for i in range(18):
+ offs = OOFDataModel.objects.filter(service_resource_id=ignore_case_get(self.data, "vnfInstanceId"))
+ if not (offs.exists() and offs[0].vdu_info):
+ logger.debug("Cannot find oof data, retry%s" % (i + 1))
+ time.sleep(5)
+ continue
+ try:
+ vdu_info = json.loads(offs[0].vdu_info)
+ grant_resp['vimAssets'] = {'computeResourceFlavours': []}
+ for vdu in vdu_info:
+ grant_resp['vimAssets']['computeResourceFlavours'].append({
+ 'vimConnectionId': offs[0].vim_id,
+ 'resourceProviderId': vdu.get("vduName"),
+ 'vnfdVirtualComputeDescId': None, # TODO: required
+ 'vimFlavourId': vdu.get("flavorId")
+ })
+ # grant_resp['additionalparams'][off.vim_id] = off.directive
+ except Exception:
+ logger.debug("Load OOF data error")
+ break
logger.debug("grant_resp=%s", grant_resp)
return grant_resp
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)}
+ # 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()]
+ return int(num) * SCALAR_UNIT_DICT[unit.upper()] / SCALAR_UNIT_DICT[base_unit.upper()]