from lcm.pub.database.models import NfInstModel
from lcm.pub.msapi.gvnfmdriver import apply_grant_to_nfvo
from lcm.pub.utils.values import ignore_case_get
+from lcm.nf.const import GRANT_TYPE
logger = logging.getLogger(__name__)
def grant_resource(data, nf_inst_id, job_id, grant_type, vdus):
logger.info("Grant resource begin")
- if grant_type == "Terminate":
- lifecycleOperration = "Terminate"
- elif grant_type == "instantiate":
- lifecycleOperration = "Instantiate"
content_args = {
'vnfInstanceId': nf_inst_id,
- 'vnfDescriptorId': '',
- 'lifecycleOperation': lifecycleOperration,
'vnfLcmOpOccId': job_id,
+ 'vnfdId': None, # TODO
+ 'flavourId': None, # TODO
+ 'operate': grant_type,
+ 'isAutomaticInvocation': True, # TODO
+ 'instantiationLevelId': None, # TODO
'addResources': [],
+ 'tmpResources': [],
+ 'updateResources': [],
'removeResources': [],
- 'placementConstraint': [],
- 'additionalParam': {}
+ 'placementConstraints': [],
+ 'vimConstraints': [],
+ 'additionalParams': {},
+ '_links': None # TODO
}
- if grant_type == "Terminate":
+ if grant_type == GRANT_TYPE.TERMINATE:
res_index = 1
for vdu in vdus:
res_def = {
- 'type': 'VDU',
- 'resDefId': str(res_index),
- 'resDesId': vdu.resouceid}
+ 'id': str(res_index),
+ 'type': 'COMPUTE',
+ 'vduId': None,
+ 'resourceTemplateId': None,
+ 'resource': {
+ 'vimConnectionId': None,
+ 'resourceProviderId': None,
+ 'resourceid': vdu.resourceid,
+ 'vimLevelResourceType': None
+ }
+ }
content_args['removeResources'].append(res_def)
res_index += 1
- content_args['additionalParam']['vimid'] = vdus[0].vimid
- elif grant_type == "Instantiate":
+ content_args['additionalParams']['vimid'] = vdus[0].vimid
+ elif grant_type == GRANT_TYPE.INSTANTIATE:
vim_id = ignore_case_get(ignore_case_get(data, "additionalParams"), "vimId")
res_index = 1
for vdu in vdus:
res_def = {
- 'type': 'VDU',
- 'resDefId': str(res_index),
- 'resDesId': ignore_case_get(vdu, "vdu_id")
+ 'id': str(res_index),
+ 'type': 'COMPUTE',
+ 'vduId': None,
+ 'resourceTemplateId': None, # TODO: shall be present for the planned creation of new resources.
+ 'resource': None
}
content_args['addResources'].append(res_def)
res_index += 1
- content_args['additionalParam']['vimid'] = vim_id
+ content_args['additionalParams']['vimid'] = vim_id
+ elif grant_type == GRANT_TYPE.OPERATE:
+ res_index = 1
+ for vdu in vdus:
+ res_def = {
+ 'id': str(res_index),
+ 'type': 'COMPUTE',
+ 'vduId': None,
+ 'resourceTemplateId': None,
+ 'resource': {
+ 'vimConnectionId': None,
+ 'resourceProviderId': None,
+ 'resourceid': vdu.resourceid,
+ 'vimLevelResourceType': None
+ }
+ }
+ content_args['updateResources'].append(res_def)
+ res_index += 1
+ content_args['additionalParams']['vimid'] = vdus[0].vimid
vnfInsts = NfInstModel.objects.filter(nfinstid=nf_inst_id)
- content_args['additionalParam']['vnfmid'] = vnfInsts[0].vnfminstid
+ content_args['additionalParams']['vnfmid'] = vnfInsts[0].vnfminstid
logger.info('Grant request data=%s' % content_args)
apply_result = apply_grant_to_nfvo(json.dumps(content_args))
return apply_result