def delete()

in src/lambdas/r8s_api_handler/processors/shape_rule_processor.py [0:0]


    def delete(self, event):
        _LOG.debug(f'Remove shape rule event: {event}')

        validate_params(event, (ID_ATTR,))

        rule_id = event.get(ID_ATTR)

        applications = self.application_service.resolve_application(
            event=event)

        if not applications:
            _LOG.warning(f'No application found matching given query.')
            return build_response(
                code=RESPONSE_BAD_REQUEST_CODE,
                content=f'No application found matching given query.'
            )
        app_ids = [application.application_id for application in applications]
        parents = self.get_parents(application_ids=app_ids)

        if not parents:
            _LOG.warning(f'No parents found matching given query.')
            return build_response(
                code=RESPONSE_BAD_REQUEST_CODE,
                content=f'No parents found matching given query.'
            )

        target_parent = self.get_parent_with_rule(
            parents=parents,
            rule_id=rule_id
        )

        if not target_parent:
            _LOG.warning(f'Shape rule \'{rule_id}\' does not exist.')
            return build_response(
                code=RESPONSE_RESOURCE_NOT_FOUND_CODE,
                content=f'Shape rule \'{rule_id}\' does not exist.'
            )

        _LOG.debug(f'Going to delete rule \'{rule_id}\' from '
                   f'parent \'{target_parent.parent_id}\'')
        parent_meta = self.parent_service.get_parent_meta(
            parent=target_parent)
        self.parent_service.remove_shape_rule_from_application(
            parent_meta=parent_meta,
            rule_id=rule_id
        )
        _LOG.debug(f'Rule \'{rule_id}\' removed from parent '
                   f'\'{target_parent.parent_id}\'.')
        self.parent_service.set_parent_meta(
            parent=target_parent,
            meta=parent_meta
        )
        _LOG.debug(f'Parent meta updated.')
        self.parent_service.save(parent=target_parent)
        _LOG.debug(f'Updated parent saved.')
        return build_response(
            code=RESPONSE_OK_CODE,
            content=f'Shape rule \'{rule_id}\' was deleted from parent '
                    f'\'{target_parent.application_id}\''
        )