X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=rwlaunchpad%2Fplugins%2Frwnsm%2Frift%2Ftasklets%2Frwnsmtasklet%2Frwnsmtasklet.py;fp=rwlaunchpad%2Fplugins%2Frwnsm%2Frift%2Ftasklets%2Frwnsmtasklet%2Frwnsmtasklet.py;h=34fe319b329f80e1cf29197e449aff76aad1bcfa;hb=89cd782ebbb7f7b2e6bf45ac590025383a4d26cc;hp=29676d19289cdc00370c79522597374e5ab62fa1;hpb=9eba2577c8cc1de7cfe9f650bd53fee302881bef;p=osm%2FSO.git diff --git a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwnsmtasklet.py b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwnsmtasklet.py index 29676d19..34fe319b 100755 --- a/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwnsmtasklet.py +++ b/rwlaunchpad/plugins/rwnsm/rift/tasklets/rwnsmtasklet/rwnsmtasklet.py @@ -1036,7 +1036,13 @@ class VirtualNetworkFunctionRecord(object): vnfr.operational_status = 'init' else: # Set Operational Status as pre-init for Input Param Substitution - vnfr.operational_status = 'pre_init' + if self._state not in [VnfRecordState.ACTIVE, VnfRecordState.TERMINATE_PENDING, + VnfRecordState.TERMINATED, VnfRecordState.FAILED]: + # To make sure that an active VNFR is not updated with a previous state. + # This can happen during config state updates. + vnfr.operational_status = 'pre_init' + else: + vnfr.operational_status = self._state return vnfr @@ -2695,9 +2701,22 @@ class NetworkServiceRecord(object): """ Terminate VNFRS in this network service """ self._log.debug("Terminating VNFs in network service %s - %s", self.id, self.name) vnfr_ids = [] + scaleIn = scalein for vnfr in list(vnfrs): self._log.debug("Terminating VNFs in network service %s %s", vnfr.id, self.id) - yield from self.nsm_plugin.terminate_vnf(self, vnfr, scalein=scalein) + # The below check is added for determining which of the VNFRS are scaling ones + # under OPENMANO. Need to pass scalein True when terminate received to OPENAMNO + # Plugin. + if isinstance(self.nsm_plugin, openmano_nsm.OpenmanoNsPlugin): + for scaling_group in self._scaling_groups.values(): + scaling_instances = scaling_group.create_record_msg().instance + for sc in scaling_instances: + if vnfr.id in sc.vnfrs: + scaleIn = True + self._log.debug("Found a Scaling VNF for Openmano during Terminate") + + yield from self.nsm_plugin.terminate_vnf(self, vnfr, scalein=scaleIn) + scaleIn = scalein vnfr_ids.append(vnfr.id) for vnfr_id in vnfr_ids: