def request_admin_api(): print request.method if request.method == 'GET': return jsonify(ResourceAdmin()._show_help()) else: print request.json if not 'server_name' in request.json \ or not 'action' in request.json \ or not 'network' in request.json: return jsonify({'error': 'missing required data'}) response_object = GenericDataObject(request.json) roledefs = literal_eval(DW.cache_key_get('roledefs')) if response_object.action == 'remove': changed_roles = {} try: for name in roledefs: if response_object.server_name in name: host = roledefs[name][response_object.network] for name in roledefs: if host in roledefs[name]: roledefs[name].remove(host) changed_roles[name] = roledefs[name] DW.cache_key_set('roledefs', roledefs) except Exception, e: return jsonify({'error':e}) return jsonify({ 'host':host, 'changed_roles': changed_roles }) elif response_object.action == 'list': return jsonify(roledefs)
def request_admin_api(): print request.method if request.method == 'GET': return jsonify(ResourceAdmin()._show_help()) else: print request.json if not 'server_name' in request.json \ or not 'action' in request.json \ or not 'network' in request.json: return jsonify({'error': 'missing required data'}) response_object = GenericDataObject(request.json) roledefs = literal_eval(DW.cache_key_get('roledefs')) if response_object.action == 'remove': changed_roles = {} try: for name in roledefs: if response_object.server_name in name: host = roledefs[name][response_object.network] for name in roledefs: if host in roledefs[name]: roledefs[name].remove(host) changed_roles[name] = roledefs[name] DW.cache_key_set('roledefs', roledefs) except Exception, e: return jsonify({'error': e}) return jsonify({'host': host, 'changed_roles': changed_roles}) elif response_object.action == 'list': return jsonify(roledefs)
def process_notification(name, AxolTask, key): notification_status = DW.cache_key_get(key) print '<Notification Status>: %s' % notification_status if notification_status == None: default = { 'warn_threshold': 0, 'silence_threshold': 0 } DW.cache_key_set(key, default) notification_status = DW.cache_key_get(key) ns = literal_eval(notification_status) ns['warn_threshold'] += 1 if (7 >= ns['warn_threshold'] > 4 and ns['silence_threshold'] == 0): self.send_notice( name=AxolTask.name, data=AxolTask.value, group='default', alert_type=['email', 'text'] ) DW.cache_key_set(key, ns) return 1 elif (ns['warn_threshold'] > 4 and ns['silence_threshold'] <= 12): ns['silence_threshold'] += 1 DW.cache_key_set(key, ns) return 1 elif ns['silence_threshold'] > 12: ns['warn_threshold'] = 5 ns['silence_threshold'] = 0 DW.cache_key_set(key, ns) return 1 DW.cache_key_set(key, ns) return 1
def populate_cache(self, response): server_dict = {} print response print '##################' response['api'] = api response['api']['api_name'] = 'health' for item in response['value']: print '1111' print response['value'][item] response['value'][item] = response['value'][item] for item_2 in response['value'][item]: if item_2 != 'name' and item_2 != 'warnings': print '2222' print response['value'][item][item_2] response['value'][item][item_2] = response['value'][item][item_2] key = 'ro_%s_%s' % (item_2, item) print '-------------------' print key DW.cache_key_set(key, response['value'][item][item_2])
def populate_cache(self, response): server_dict = {} print response print '##################' response['api'] = api response['api']['api_name'] = 'health' for item in response['value']: print '1111' print response['value'][item] response['value'][item] = response['value'][item] for item_2 in response['value'][item]: if item_2 != 'name' and item_2 != 'warnings': print '2222' print response['value'][item][item_2] response['value'][item][item_2] = response['value'][item][ item_2] key = 'ro_%s_%s' % (item_2, item) print '-------------------' print key DW.cache_key_set(key, response['value'][item][item_2])
class ResourceRemoveAlertServer(AxolResource): """docstring for ResourceRemoveAlertServer Must implement: _show_help self.methods = {<method_type>: function} self.source = {keyword} request_{keyword}_api calculate_new_fields """ required_post = { 'server_name': (True, u's'), 'profile': (False, u's') } def __init__(self): super(ResourceRemoveAlertServer, self).__init__() self.source = 'remove_alert_servers' self.local = True def _show_help(self): return { 'Help': { 'api': '/api/remove_alert_servers', 'method': 'POST', 'required data': { 'server_name': '<name of the server to remove>' }, 'version': api } } @staticmethod @app.route('/api/remove_alert_server', methods=['POST', 'GET']) def api_remove_alert_server(): role = 'production_servers' if request.method == 'GET': return jsonify(ResourceRemoveAlertServer()._show_help()) try: data = CommonResource.handle_request(request, ResourceRemoveAlertServer.required_post) except Exception, e: CommonLogger.log(e, 'remove_alert_server', 'api_remove_alert_server') return jsonify({'response': {'error': str(e)}}) try: roledefs = literal_eval(DW.cache_key_get('roledefs')) server_dict = ResourceRemoveAlertServer.create_server_list(roledefs, role) if server_dict[data.server_name] in roledefs[role]: roledefs[role].remove(server_dict[data.server_name]) DW.cache_key_set('roledefs', roledefs) if data.server_name in server_dict.keys(): del server_dict[data.server_name] except Exception, e: CommonLogger.log(e, 'remove_alert_server', 'api_remove_alert_server') return jsonify({'response': {'error': str(e)}})
def process_notification(name, AxolTask, key): notification_status = DW.cache_key_get(key) print "<Notification Status>: %s" % notification_status if notification_status == None: default = {"warn_threshold": 0, "silence_threshold": 0} DW.cache_key_set(key, default) notification_status = DW.cache_key_get(key) ns = literal_eval(notification_status) ns["warn_threshold"] += 1 if 7 >= ns["warn_threshold"] > 4 and ns["silence_threshold"] == 0: self.send_notice(name=AxolTask.name, data=AxolTask.value, group="default", alert_type=["email", "text"]) DW.cache_key_set(key, ns) return 1 elif ns["warn_threshold"] > 4 and ns["silence_threshold"] <= 12: ns["silence_threshold"] += 1 DW.cache_key_set(key, ns) return 1 elif ns["silence_threshold"] > 12: ns["warn_threshold"] = 5 ns["silence_threshold"] = 0 DW.cache_key_set(key, ns) return 1 DW.cache_key_set(key, ns) return 1
class ResourceAdmin(AxolResource): """docstring for ResourceProcessor Must implement: _show_help self.source = {keyword} request_{keyword}_api calculate_new_fields """ def __init__(self): super(ResourceAdmin, self).__init__() self.source = 'version' self.local = True def _show_help(self): return { 'Help': { 'roles administration': { 'api': '/api/system/admin/roles', 'available_methods': { 'POST': { 'required data': [ 'network=<internal, external>', 'action=<remove, list, list_ec2, restore>', 'server_name=<name of server>' ] } } } } } @staticmethod @app.route('/api/manage_alerts', methods=['POST', 'GET']) def request_admin_api(): print request.method if request.method == 'GET': return jsonify(ResourceAdmin()._show_help()) else: print request.json if not 'server_name' in request.json \ or not 'action' in request.json \ or not 'network' in request.json: return jsonify({'error': 'missing required data'}) response_object = GenericDataObject(request.json) roledefs = literal_eval(DW.cache_key_get('roledefs')) if response_object.action == 'remove': changed_roles = {} try: for name in roledefs: if response_object.server_name in name: host = roledefs[name][response_object.network] for name in roledefs: if host in roledefs[name]: roledefs[name].remove(host) changed_roles[name] = roledefs[name] DW.cache_key_set('roledefs', roledefs) except Exception, e: return jsonify({'error': e}) return jsonify({'host': host, 'changed_roles': changed_roles}) elif response_object.action == 'list': return jsonify(roledefs) elif response_object.action == 'restore': roledefs = generate_base_roles() DW.cache_key_set('roledefs', roledefs) return jsonify(roledefs)
key = 'notification_threshold' if len(AxolTask.value) > 0: for server in AxolTask.value: if server != 'status': if AxolTask.value[server] != []: print '<Task Warnings>: %s' % AxolTask.value[server] try: process_notification(server, AxolTask, key) except Exception, e: CommonLogger.log(e, 'axol_resource', 'process_notification') else: default = { 'warn_threshold': 0, 'silence_threshold': 0 } DW.cache_key_set(key, default) return 1 def process_queue(self, result): t = 0 while True: if result.ready() == True: g = result.get() return g, t break else: t = t + 0.001 time.sleep(0.001) if t >= 10: tmp = { 'Response': {
DW.cache_key_set(key, ns) return 1 key = "notification_threshold" if len(AxolTask.value) > 0: for server in AxolTask.value: if server != "status": if AxolTask.value[server] != []: print "<Task Warnings>: %s" % AxolTask.value[server] try: process_notification(server, AxolTask, key) except Exception, e: CommonLogger.log(e, "axol_resource", "process_notification") else: default = {"warn_threshold": 0, "silence_threshold": 0} DW.cache_key_set(key, default) return 1 def process_queue(self, result): t = 0 while True: if result.ready() == True: g = result.get() return g, t break else: t = t + 0.001 time.sleep(0.001) if t >= 10: tmp = {"Response": {"failed_request": True}} return tmp, t