Пример #1
0
    def delete(self, notification_id):
        username = self.get_current_user().encode('utf-8')
        customer_name = (get_user_property(username, UserKeys.CurrentCustomer))
        uri = self.request.uri
        method = self.request.method
        try:
            notification = (Notifier(username, customer_name, uri, method))

            results = (notification.delete_alerting_rule(notification_id))
            self.set_status(results['http_status'])
            self.set_header('Content-Type', 'application/json')
            self.write(json.dumps(results, indent=4))

        except Exception as e:
            results = (GenericResults(username, uri, method).something_broke(
                'delete notification', 'notifications', e))
            logger.exception(e)
            self.set_status(results['http_status'])
            self.set_header('Content-Type', 'application/json')
            self.write(json.dumps(results, indent=4))
Пример #2
0
    def post(self):
        username = self.get_current_user().encode('utf-8')
        customer_name = (get_user_property(username, UserKeys.CurrentCustomer))
        uri = self.request.uri
        method = self.request.method
        try:
            plugin = self.arguments.get('plugin', 'rv')
            rule_name = self.arguments.get('rule_name')
            rule_description = self.arguments.get('rule_description')
            agent_ids = self.arguments.get('agent_ids', [])
            tag_ids = self.arguments.get('tag_ids', [])
            user = self.arguments.get('user', None)
            group = self.arguments.get('group', None)
            all_agents = self.arguments.get('all_agents', 'true')
            rv_threshold = self.arguments.get('rv_threshold', None)
            operation_type = self.arguments.get('operation_type')
            monitoring_threshold = (self.arguments.get('monitoring_threshold',
                                                       None))
            file_systems = self.arguments.get('file_system', [])
            notification = (Notifier(username, customer_name, uri, method))
            data = ({
                NotificationKeys.NotificationType: operation_type,
                NotificationKeys.RuleName: rule_name,
                NotificationKeys.RuleDescription: rule_description,
                NotificationKeys.CreatedBy: username,
                NotificationKeys.ModifiedBy: username,
                NotificationKeys.Plugin: plugin,
                NotificationKeys.User: user,
                NotificationKeys.Group: group,
                NotificationKeys.AllAgents: all_agents,
                NotificationKeys.Agents: agent_ids,
                NotificationKeys.Tags: tag_ids,
                NotificationKeys.CustomerName: customer_name,
                NotificationKeys.AppThreshold: None,
                NotificationKeys.RebootThreshold: None,
                NotificationKeys.ShutdownThreshold: None,
                NotificationKeys.CpuThreshold: None,
                NotificationKeys.MemThreshold: None,
                NotificationKeys.FileSystemThreshold: None,
                NotificationKeys.FileSystem: file_systems,
            })
            if rv_threshold:
                rv_threshold = rv_threshold.lower()
                if operation_type == INSTALL:
                    data[NotificationKeys.AppThreshold] = rv_threshold
                    results = notification.create_install_alerting_rule(**data)

                elif operation_type == UNINSTALL:
                    data[NotificationKeys.AppThreshold] = rv_threshold
                    results = notification.create_uninstall_alerting_rule(
                        **data)

                elif operation_type == REBOOT:
                    data[NotificationKeys.RebootThreshold] = rv_threshold
                    results = notification.create_reboot_alerting_rule(**data)

                elif operation_type == SHUTDOWN:
                    data[NotificationKeys.ShutdownThreshold] = rv_threshold
                    results = notification.create_shutdown_alerting_rule(
                        **data)

                else:
                    results = (NotificationResults(
                        username, uri,
                        method).invalid_notification_type(operation_type))

            elif monitoring_threshold:
                monitoring_threshold = int(monitoring_threshold)
                if operation_type == CPU:
                    data[NotificationKeys.CpuThreshold] = monitoring_threshold
                    results = notification.create_cpu_alerting_rule(**data)

                elif operation_type == MEM:
                    data[NotificationKeys.MemThreshold] = monitoring_threshold
                    results = notification.create_mem_alerting_rule(**data)

                elif operation_type == FS and file_systems:
                    data[NotificationKeys.
                         FileSystemThreshold] = monitoring_threshold
                    data[NotificationKeys.FileSystem] = file_systems
                    results = notification.create_filesystem_alerting_rule(
                        **data)

                else:
                    results = (NotificationResults(
                        username, uri,
                        method).invalid_notification_type(operation_type))

            else:
                results = (GenericResults(username, uri,
                                          method).incorrect_arguments())

            self.set_status(results['http_status'])
            self.set_header('Content-Type', 'application/json')
            self.write(json.dumps(results, indent=4))

        except Exception as e:
            results = (GenericResults(username, uri, method).something_broke(
                'create notification', 'notifications', e))
            logger.exception(e)
            self.set_status(results['http_status'])
            self.set_header('Content-Type', 'application/json')
            self.write(json.dumps(results, indent=4))