コード例 #1
0
    def _validate_alarming_policy(self, context, vnf_id, trigger):
        # validate alarm status

        # Trigger will contain only one action in trigger['trigger'] as it
        # filtered in _get_vnf_triggers().
        # Getting action from trigger to decide which process_alarm_for_vnf
        # method will be called.
        if list(trigger['trigger'])[0]\
                in constants.RESERVATION_POLICY_ACTIONS:
            if not self._vnf_reservation_monitor.process_alarm_for_vnf(
                    vnf_id, trigger):
                raise exceptions.AlarmUrlInvalid(vnf_id=vnf_id)
        else:
            if not self._vnf_alarm_monitor.process_alarm_for_vnf(
                    vnf_id, trigger):
                raise exceptions.AlarmUrlInvalid(vnf_id=vnf_id)

        # validate policy action. if action is composite, split it.
        # ex: respawn%notify
        action = trigger['action_name']
        action_list = action.split('%')
        pl_action_dict = dict()
        pl_action_dict['policy_actions'] = dict()
        pl_action_dict['policy_actions']['def_actions'] = list()
        pl_action_dict['policy_actions']['custom_actions'] = dict()
        for action in action_list:
            # validate policy action. if action is composite, split it.
            # ex: SP1-in, SP1-out
            action_ = None
            if action in constants.DEFAULT_ALARM_ACTIONS:
                pl_action_dict['policy_actions']['def_actions'].append(action)
            policy_ = self.get_vnf_policy(context, action, vnf_id)
            if not policy_:
                sp_action = action.split('-')
                if len(sp_action) == 2:
                    bk_policy_name = sp_action[0]
                    bk_policy_action = sp_action[1]
                    policies_ = self.get_vnf_policies(
                        context, vnf_id, filters={'name': bk_policy_name})
                    if policies_:
                        policy_ = policies_[0]
                        action_ = bk_policy_action
            if policy_:
                pl_action_dict['policy_actions']['custom_actions'].update({
                    policy_['id']: {
                        'bckend_policy': policy_,
                        'bckend_action': action_
                    }
                })

            LOG.debug("Trigger %s is validated successfully", trigger)

        return pl_action_dict
コード例 #2
0
    def _validate_alarming_policy(self, context, vnf_id, trigger):
        # validate alarm status
        if not self._vnf_alarm_monitor.process_alarm_for_vnf(vnf_id, trigger):
            raise exceptions.AlarmUrlInvalid(vnf_id=vnf_id)

        policy_ = None
        action_ = None
        # validate policy action. if action is composite, split it.
        # ex: SP1-in, SP1-out
        action = trigger['action_name']
        sp_action = action.split('-')
        if len(sp_action) == 2:
            bk_policy_name = sp_action[0]
            bk_policy_action = sp_action[1]
            policies_ = self.get_vnf_policies(context,
                                              vnf_id,
                                              filters={'name': bk_policy_name})
            if policies_:
                policy_ = policies_[0]
                action_ = bk_policy_action

        if not policy_:
            if action not in constants.DEFAULT_ALARM_ACTIONS:
                policy_ = self.get_vnf_policy(context, action, vnf_id)
        LOG.debug(_("Trigger %s is validated successfully"), trigger)
        return policy_, action_
コード例 #3
0
    def _validate_alarming_policy(self, context, policy):
        vnf_id = policy['vnf']['id']
        # validate policy type
        type = policy['type']
        if type not in constants.POLICY_ALARMING:
            raise exceptions.VnfPolicyTypeInvalid(
                type=type,
                valid_types=constants.POLICY_ALARMING,
                policy=policy['id']
            )
        # validate alarm status
        if not self._vnf_alarm_monitor.process_alarm_for_vnf(policy):
            raise exceptions.AlarmUrlInvalid(vnf_id=vnf_id)

        # validate policy action
        action = policy['action_name']
        policy_ = None
        if action not in (constants.DEFAULT_ALARM_ACTIONS + constants.CLUSTER_ALARM_ACTIONS):
            policy_ = self.get_vnf_policy(context, action, vnf_id)
            if not policy_:
                raise exceptions.VnfPolicyNotFound(
                    vnf_id=action,
                    policy=policy['id']
                )
        LOG.debug(_("Policy %s is validated successfully") % policy)
        return policy_
コード例 #4
0
ファイル: plugin.py プロジェクト: wq618/tacker
    def _validate_alarming_policy(self, context, vnf_id, trigger):
        # validate alarm status
        if not self._vnf_alarm_monitor.process_alarm_for_vnf(vnf_id, trigger):
            raise exceptions.AlarmUrlInvalid(vnf_id=vnf_id)

        # validate policy action. if action is composite, split it.
        # ex: respawn%notify
        action = trigger['action_name']
        action_list = action.split('%')
        pl_action_dict = dict()
        pl_action_dict['policy_actions'] = dict()
        pl_action_dict['policy_actions']['def_actions'] = list()
        pl_action_dict['policy_actions']['custom_actions'] = dict()
        for action in action_list:
            # validate policy action. if action is composite, split it.
            # ex: SP1-in, SP1-out
            action_ = None
            if action in constants.DEFAULT_ALARM_ACTIONS:
                pl_action_dict['policy_actions']['def_actions'].append(action)
            policy_ = self.get_vnf_policy(context, action, vnf_id)
            if not policy_:
                sp_action = action.split('-')
                if len(sp_action) == 2:
                    bk_policy_name = sp_action[0]
                    bk_policy_action = sp_action[1]
                    policies_ = self.get_vnf_policies(
                        context, vnf_id, filters={'name': bk_policy_name})
                    if policies_:
                        policy_ = policies_[0]
                        action_ = bk_policy_action
            if policy_:
                pl_action_dict['policy_actions']['custom_actions'].update({
                    policy_['id']: {
                        'bckend_policy': policy_,
                        'bckend_action': action_
                    }
                })

            LOG.debug("Trigger %s is validated successfully", trigger)

        return pl_action_dict