def _DELETE(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() watch_id = param[1] if watch_id is None: return web.notfound() watch = w_findby1(self.orm, watch_id) w_delete(self.orm, watch) # delete setting file plugin = watch.plugin plugin_selector = watch.plugin_selector modules = ["collectdplugin"] host_id = self.chk_hostby1(param) host = m_findbyhost1(self.orm, host_id) ## read config and delete threashold extra_args = {'include':'^threshold_'} dop = read_conf(modules, webobj=self, machine=host, extra_args=extra_args) if dop is False: self.logger.debug("Delete watch failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read Conf)') delete_threshold(plugin, plugin_selector, dop=dop, webobj=self, host=host) ## apply setting and collectd restart command = "/etc/init.d/collectd condrestart" extra_args = {"post-command": command} retval = write_conf(dop, webobj=self, machine=host, extra_args=extra_args) if retval is False: self.logger.debug("Delete watch failed. Failed write conf.") return web.internalerror('Internal Server Error. (Write Conf)') return web.accepted()
def _PUT(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() uni_device = param[1] if uni_device is None: return web.notfound() device = uni_device.encode("utf-8") if not validates_nic(self): self.logger.debug("Change nic failed. Did not validate.") return web.badrequest(self.view.alert) host = findbyhost1(self.orm, host_id) modules = ["ifcfg"] dop = read_conf(modules, self, host) if dop is False: self.logger.error("Change nic failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read conf)') ipaddr = "" if is_param(self.input, ipaddr): if self.input.ipaddr: ipaddr = self.input.ipaddr netmask = "" if is_param(self.input, netmask): if self.input.netmask: netmask = self.input.netmask bootproto = self.input.bootproto onboot = "no" if is_param(self.input, 'onboot'): onboot = "yes" net = NetworkAddress("%s/%s" % (ipaddr,netmask)) network = net.network broadcast = net.broadcast if not dop.get("ifcfg", device): self.logger.error("Change nic failed. Target config not found.") return web.internalerror('Internal Server Error. (Get conf)') dop.set("ifcfg",[device,"ONBOOT"] ,onboot) dop.set("ifcfg",[device,"BOOTPROTO"],bootproto) dop.set("ifcfg",[device,"IPADDR"] ,ipaddr) dop.set("ifcfg",[device,"NETMASK"] ,netmask) if network is not None: dop.set("ifcfg",[device,"NETWORK"] ,network) if broadcast is not None: dop.set("ifcfg",[device,"BROADCAST"],broadcast) retval = write_conf(dop, self, host) if retval is False: self.logger.error("Change nic failed. Failed write conf.") return web.internalerror('Internal Server Error. (Adding Task)') return web.accepted(url=web.ctx.path)
def _POST(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() host = findbyhost1(self.orm, host_id) if not validates_staticroute(self): return web.badrequest(self.view.alert) modules = ["staticroute"] dop = read_conf(modules, self, host) if dop is False: return web.internalerror('Internal Server Error. (Timeout)') target = self.input.target net = NetworkAddress(target) ipaddr = net.ipaddr netmask = net.netmask netlen = net.netlen network = net.network target = "%s/%s" % ( ipaddr, netlen, ) gateway = self.input.gateway device = self.input.device dop.set("staticroute", [device, target], gateway) from karesansui.lib.parser.staticroute import PARSER_COMMAND_ROUTE if net.netlen == 32: command = "%s add -host %s gw %s dev %s" % ( PARSER_COMMAND_ROUTE, ipaddr, gateway, device, ) command = "%s add -host %s dev %s" % ( PARSER_COMMAND_ROUTE, ipaddr, device, ) else: command = "%s add -net %s netmask %s gw %s dev %s" % ( PARSER_COMMAND_ROUTE, network, netmask, gateway, device, ) extra_args = {"post-command": command} retval = write_conf(dop, self, host, extra_args=extra_args) if retval is False: return web.internalerror('Internal Server Error. (Adding Task)') return web.accepted(url=web.ctx.path)
def _PUT(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() uni_device = param[1] if uni_device is None: return web.notfound() device = uni_device.encode("utf-8") if not validates_nic(self): self.logger.debug("Change nic failed. Did not validate.") return web.badrequest(self.view.alert) host = findbyhost1(self.orm, host_id) modules = ["ifcfg"] dop = read_conf(modules, self, host) if dop is False: self.logger.error("Change nic failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read conf)') ipaddr = "" if is_param(self.input, ipaddr): if self.input.ipaddr: ipaddr = self.input.ipaddr netmask = "" if is_param(self.input, netmask): if self.input.netmask: netmask = self.input.netmask bootproto = self.input.bootproto onboot = "no" if is_param(self.input, 'onboot'): onboot = "yes" net = NetworkAddress("%s/%s" % (ipaddr, netmask)) network = net.network broadcast = net.broadcast if not dop.get("ifcfg", device): self.logger.error("Change nic failed. Target config not found.") return web.internalerror('Internal Server Error. (Get conf)') dop.set("ifcfg", [device, "ONBOOT"], onboot) dop.set("ifcfg", [device, "BOOTPROTO"], bootproto) dop.set("ifcfg", [device, "IPADDR"], ipaddr) dop.set("ifcfg", [device, "NETMASK"], netmask) if network is not None: dop.set("ifcfg", [device, "NETWORK"], network) if broadcast is not None: dop.set("ifcfg", [device, "BROADCAST"], broadcast) retval = write_conf(dop, self, host) if retval is False: self.logger.error("Change nic failed. Failed write conf.") return web.internalerror('Internal Server Error. (Adding Task)') return web.accepted(url=web.ctx.path)
def _PUT(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() host = findbyhost1(self.orm, host_id) if not validates_iptables_save(self, host): return web.badrequest(self.view.alert) from karesansui.lib.dict_op import DictOp dop = DictOp() dop.addconf("iptables", {}) dop.set("iptables",["config"],self.input.iptables_save.split("\r\n")) retval = write_conf(dop, self, host) if retval is False: return web.internalerror('Internal Server Error. (Adding Task)') return web.accepted(url=web.ctx.path)
def _DELETE(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() watch_id = param[1] if watch_id is None: return web.notfound() watch = w_findby1(self.orm, watch_id) w_delete(self.orm, watch) # delete setting file plugin = watch.plugin plugin_selector = watch.plugin_selector modules = ["collectdplugin"] host_id = self.chk_hostby1(param) host = m_findbyhost1(self.orm, host_id) ## read config and delete threashold extra_args = {'include': '^threshold_'} dop = read_conf(modules, webobj=self, machine=host, extra_args=extra_args) if dop is False: self.logger.debug("Delete watch failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read Conf)') delete_threshold(plugin, plugin_selector, dop=dop, webobj=self, host=host) ## apply setting and collectd restart command = "/etc/init.d/collectd condrestart" extra_args = {"post-command": command} retval = write_conf(dop, webobj=self, machine=host, extra_args=extra_args) if retval is False: self.logger.debug("Delete watch failed. Failed write conf.") return web.internalerror('Internal Server Error. (Write Conf)') return web.accepted()
def _POST(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() host = findbyhost1(self.orm, host_id) if not validates_staticroute(self): return web.badrequest(self.view.alert) modules = ["staticroute"] dop = read_conf(modules, self, host) if dop is False: return web.internalerror('Internal Server Error. (Timeout)') target = self.input.target net = NetworkAddress(target) ipaddr = net.ipaddr netmask = net.netmask netlen = net.netlen network = net.network target = "%s/%s" % (ipaddr,netlen,) gateway = self.input.gateway device = self.input.device dop.set("staticroute", [device,target], gateway) from karesansui.lib.parser.staticroute import PARSER_COMMAND_ROUTE if net.netlen == 32: command = "%s add -host %s gw %s dev %s" % (PARSER_COMMAND_ROUTE,ipaddr,gateway,device,) command = "%s add -host %s dev %s" % (PARSER_COMMAND_ROUTE,ipaddr,device,) else: command = "%s add -net %s netmask %s gw %s dev %s" % (PARSER_COMMAND_ROUTE,network,netmask,gateway,device,) extra_args = {"post-command": command} retval = write_conf(dop, self, host, extra_args=extra_args) if retval is False: return web.internalerror('Internal Server Error. (Adding Task)') return web.accepted(url=web.ctx.path)
def _DELETE(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() b64name = param[1] if not (b64name and host_id): return web.badrequest() host = findbyhost1(self.orm, host_id) name = base64_decode(str(b64name)) (target, device) = name.split("@") net = NetworkAddress(target) ipaddr = net.ipaddr netmask = net.netmask netlen = net.netlen target = "%s/%s" % (ipaddr,netlen,) modules = ["staticroute"] dop = read_conf(modules, self, host) if dop is False: return web.internalerror('Internal Server Error. (Timeout)') dop.delete("staticroute", [device,target]) from karesansui.lib.parser.staticroute import PARSER_COMMAND_ROUTE if net.netlen == 32: command = "%s del -host %s dev %s" % (PARSER_COMMAND_ROUTE,ipaddr,device,) else: command = "%s del -net %s netmask %s dev %s" % (PARSER_COMMAND_ROUTE,ipaddr,netmask,device,) extra_args = {"post-command": command} retval = write_conf(dop, self, host, extra_args=extra_args) if retval is False: return web.internalerror('Internal Server Error. (Adding Task)') return web.accepted()
def _POST(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() if not validates_watch(self): self.logger.debug("Set watch failed. Did not validate.") return web.badrequest(self.view.alert) plugin = self.input.watch_target plugin_instance = None type = None type_instance = None plugin_ds = None libvirt_host = None if plugin == COLLECTD_PLUGIN_CPU: #cpu method plugin_instance = string.atoi(self.input.logical_cpu_number) - 1 type_instance = self.input.cpu_status type = COLLECTD_CPU_TYPE plugin_ds = COLLECTD_CPU_DS elif plugin == COLLECTD_PLUGIN_MEMORY: #memory method type_instance = self.input.memory_status type = COLLECTD_MEMORY_TYPE plugin_ds = COLLECTD_MEMORY_DS elif plugin == COLLECTD_PLUGIN_DF: #df method type = COLLECTD_DF_TYPE type_instance = self.input.df_target_fs type_instance = re.sub(r'^/dev/', '', type_instance) type_instance = re.sub(r'/', '_', type_instance) plugin_ds = self.input.df_disk_status elif plugin == COLLECTD_PLUGIN_INTERFACE: #interface method type = self.input.network_status type_instance = self.input.network_target_interface plugin_ds = self.input.network_direction elif plugin == COLLECTD_PLUGIN_LIBVIRT: #libvirt method libvirt_host = self.input.libvirt_target_machine if self.input.libvirt_target == "cpu": if self.input.libvirt_vcpu_target == "total": type = COLLECTD_LIBVIRT_TYPE['CPU_TOTAL'] else: type = COLLECTD_LIBVIRT_TYPE['VCPU'] type_instance = self.input.libvirt_vcpu_target plugin_ds = COLLECTD_CPU_DS elif self.input.libvirt_target == "disk": type = COLLECTD_LIBVIRT_TYPE['DISK_OCTETS'] type_instance = self.input.libvirt_disk_target plugin_ds = self.input.libvirt_disk_value_type elif self.input.libvirt_target == "network": type = "if_" + self.input.libvirt_network_status type_instance = self.input.libvirt_target_interface plugin_ds = self.input.libvirt_network_direction elif plugin == COLLECTD_PLUGIN_LOAD: #load method type = COLLECTD_LOAD_TYPE plugin_ds = self.input.load_term else: self.logger.debug("Set watch failed. Unknown plugin type.") return web.badrequest() plugin_selector = create_plugin_selector(plugin_instance, type, type_instance, plugin_ds, libvirt_host) ## text continuation_count = self.input.continuation_count prohibition_period = self.input.prohibition_period threshold_val1 = self.input.threshold_val1 threshold_val2 = self.input.threshold_val2 threshold_type = self.input.threshold_type if is_param(self.input, 'warning_script'): warning_script = self.input.warning_script else: warning_script = "" if is_param(self.input, 'warning_mail_body'): warning_mail_body = self.input.warning_mail_body else: warning_mail_body = "" if is_param(self.input, 'failure_script'): failure_script = self.input.failure_script else: failure_script = "" if is_param(self.input, 'failure_mail_body'): failure_mail_body = self.input.failure_mail_body else: failure_mail_body = "" if is_param(self.input, 'okay_script'): okay_script = self.input.okay_script else: okay_script = "" if is_param(self.input, 'okay_mail_body'): okay_mail_body = self.input.okay_mail_body else: okay_mail_body = "" if is_param(self.input, 'notify_mail_to'): notify_mail_to = self.input.notify_mail_to else: notify_mail_to = "" if is_param(self.input, 'notify_mail_from'): notify_mail_from = self.input.notify_mail_from else: notify_mail_from = "" ## bool bool_input_key = ["use_percentage", "enable_warning_mail", "enable_failure_mail", "enable_okay_mail", "enable_warning_script", "enable_failure_script", "enable_okay_script"] bool_values = {} for key in bool_input_key: if self.input.has_key(key): bool_values.update({key:True}) else: bool_values.update({key:False}) if threshold_type == "max": warning_value = create_threshold_value(min_value=None, max_value=threshold_val1) failure_value = create_threshold_value(min_value=None, max_value=threshold_val2) elif threshold_type == "min": warning_value = create_threshold_value(min_value=threshold_val2, max_value=None) failure_value = create_threshold_value(min_value=threshold_val1, max_value=None) else: self.logger.debug("Set watch failed. Unknown threshold type.") return web.badrequest() machine = m_findby1(self.orm, host_id) if w_is_uniq_duplication(self.orm, machine, plugin, plugin_selector) is True: self.logger.debug("Set watch failed. Duplicate watch DB.") return web.badrequest("Set watch failed. Duplication watch") _watch = w_new(created_user = self.me, modified_user = self.me, name = self.input.watch_name, plugin = plugin, plugin_selector = plugin_selector, karesansui_version = get_karesansui_version(), collectd_version = get_collectd_version(), machine = machine, continuation_count = continuation_count, prohibition_period = prohibition_period, warning_value = warning_value, is_warning_percentage = bool_values.get("use_percentage"), is_warning_script = bool_values.get("enable_warning_script"), warning_script = warning_script, is_warning_mail = bool_values.get("enable_warning_mail"), warning_mail_body = warning_mail_body, failure_value = failure_value, is_failure_percentage = bool_values.get("use_percentage"), is_failure_script = bool_values.get("enable_failure_script"), failure_script = failure_script, is_failure_mail = bool_values.get("enable_failure_mail"), failure_mail_body = failure_mail_body, is_okay_script = bool_values.get("enable_okay_script"), okay_script = okay_script, is_okay_mail = bool_values.get("enable_okay_mail"), okay_mail_body = okay_mail_body, notify_mail_to = notify_mail_to, notify_mail_from = notify_mail_from, is_deleted = False, ) w_save(self.orm, _watch) modules = ["collectdplugin"] host = m_findbyhost1(self.orm, host_id) extra_args = {'include':'^threshold_'} #extra_args = {} dop = read_conf(modules, webobj=self, machine=host, extra_args=extra_args) if dop is False: self.logger.debug("Set watch failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read Conf)') params = {} if threshold_type == "max": params['WarningMax'] = str(threshold_val1) params['FailureMax'] = str(threshold_val2) elif threshold_type == "min": params['WarningMin'] = str(threshold_val2) params['FailureMin'] = str(threshold_val1) params['Percentage'] = str(bool_values.get("use_percentage")).lower() params['Persist'] = "true" set_threshold(plugin,plugin_selector,params,dop=dop,webobj=self, host=host) extra_args = {} command = "/etc/init.d/collectd condrestart" extra_args = {"post-command": command} retval = write_conf(dop, webobj=self, machine=host, extra_args=extra_args) if retval is False: self.logger.debug("Set watch failed. Failed write conf.") return web.internalerror('Internal Server Error. (Write Conf)') return web.created(None)
def _PUT(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() if not validates_general(self): self.logger.debug( "Change network general failed. Did not validate.") return web.badrequest(self.view.alert) modules = ["network", "resolv", "hosts"] host = findbyhost1(self.orm, host_id) dop = read_conf(modules, self, host) if dop is False: self.logger.error( "Change network general failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read Conf)') gateway = self.input.gateway hostname = self.input.fqdn nameservers = self.input.nameserver.strip().split() domainname = re.sub("^[^\.]+\.", "", hostname) hostname_short = re.sub("\.%s$" % (domainname), "", hostname) old_domainname = dop.get("resolv", ["domain"]) if old_domainname is False: old_domainname = dop.get("network", ["DOMAINNAME"]) if old_domainname is False: old_domainname = re.sub("^[^\.]+\.", "", os.uname()[1]) old_hostname = dop.get("network", ["HOSTNAME"]) if old_hostname is False: old_hostname = os.uname()[1] old_hostname_short = re.sub("\.%s$" % (old_domainname), "", old_hostname) # hosts hosts_arr = dop.getconf("hosts") for _k, _v in hosts_arr.iteritems(): _host = dop.get("hosts", [_k]) _value = _host[0] _comment = _host[1] _values = _value.strip().split() new_values = [] for _entry in _values: if _entry == old_hostname: _entry = hostname elif _entry == old_hostname_short: _entry = hostname_short new_values.append(_entry) new_value = " ".join(new_values) dop.set("hosts", [_k], [new_value, _comment]) dop.set("network", ["GATEWAY"], gateway) dop.set("resolv", ["nameserver"], nameservers) dop.set("resolv", ["domain"], domainname) dop.set("network", ["DOMAINNAME"], domainname) dop.set("network", ["HOSTNAME"], hostname) retval = write_conf(dop, self, host) if retval is False: self.logger.error( "Change network general failed. Failed write conf.") return web.internalerror('Internal Server Error. (Write Conf)') return web.accepted(url=web.ctx.path)
def _PUT(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() watch_id = param[1] if watch_id is None: return web.notfound() if not validates_watch(self): self.logger.debug("Change watch failed. Did not validate.") return web.badrequest(self.view.alert) watch = w_findby1(self.orm, watch_id) ## text watch.name = self.input.watch_name watch.continuation_count = self.input.continuation_count watch.prohibition_period = self.input.prohibition_period if is_param(self.input, 'warning_script'): watch.warning_script = self.input.warning_script else: watch.warning_script = "" if is_param(self.input, 'warning_mail_body'): watch.warning_mail_body = self.input.warning_mail_body else: watch.warning_mail_body = "" if is_param(self.input, 'failure_script'): watch.failure_script = self.input.failure_script else: watch.failure_script = "" if is_param(self.input, 'failure_mail_body'): watch.failure_mail_body = self.input.failure_mail_body else: watch.failure_mail_body = "" if is_param(self.input, 'okay_script'): watch.okay_script = self.input.okay_script else: watch.okay_script = "" if is_param(self.input, 'okay_mail_body'): watch.okay_mail_body = self.input.okay_mail_body else: watch.okay_mail_body = "" if is_param(self.input, 'notify_mail_to'): watch.notify_mail_to = self.input.notify_mail_to else: watch.notify_mail_to = "" if is_param(self.input, 'notify_mail_from'): watch.notify_mail_from = self.input.notify_mail_from else: watch.notify_mail_from = "" threshold_val1 = self.input.threshold_val1 threshold_val2 = self.input.threshold_val2 threshold_type = self.input.threshold_type if threshold_type == "max": warning_value = create_threshold_value(min_value=None, max_value=threshold_val1) failure_value = create_threshold_value(min_value=None, max_value=threshold_val2) elif threshold_type == "min": warning_value = create_threshold_value(min_value=threshold_val2, max_value=None) failure_value = create_threshold_value(min_value=threshold_val1, max_value=None) else: self.logger.debug("Update watch failed. Unknown threshold type.") return web.badrequest() watch.warning_value = warning_value watch.failure_value = failure_value ## bool bool_input_key = ["use_percentage", "enable_warning_mail", "enable_failure_mail", "enable_okay_mail", "enable_warning_script", "enable_failure_script", "enable_okay_script"] bool_values = {} for key in bool_input_key: if self.input.has_key(key): bool_values.update({key:True}) else: bool_values.update({key:False}) watch.is_warning_percentage = bool_values.get("use_percentage") watch.is_warning_script = bool_values.get("enable_warning_script") watch.is_warning_mail = bool_values.get("enable_warning_mail") watch.is_failure_percentage = bool_values.get("use_percentage") watch.is_failure_script = bool_values.get("enable_failure_script") watch.is_failure_mail = bool_values.get("enable_failure_mail") watch.is_okay_script = bool_values.get("enable_okay_script") watch.is_okay_mail = bool_values.get("enable_okay_mail") w_update(self.orm, watch) plugin = watch.plugin plugin_selector = watch.plugin_selector modules = ["collectdplugin"] host = m_findbyhost1(self.orm, host_id) extra_args = {'include':'^threshold_'} #extra_args = {} dop = read_conf(modules, webobj=self, machine=host, extra_args=extra_args) if dop is False: self.logger.debug("Change watch failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read Conf)') params = {} if threshold_type == "max": params['WarningMax'] = str(threshold_val1) params['FailureMax'] = str(threshold_val2) elif threshold_type == "min": params['WarningMin'] = str(threshold_val2) params['FailureMin'] = str(threshold_val1) params['Percentage'] = str(bool_values.get("use_percentage")).lower() params['Persist'] = "true" delete_threshold(plugin, plugin_selector, dop=dop, webobj=self, host=host) set_threshold(plugin,plugin_selector,params,dop=dop,webobj=self, host=host) extra_args = {} command = "/etc/init.d/collectd condrestart" extra_args = {"post-command": command} retval = write_conf(dop, webobj=self, machine=host, extra_args=extra_args) if retval is False: self.logger.debug("Change watch failed. Failed write conf.") return web.internalerror('Internal Server Error. (Write Conf)') return web.accepted()
def _PUT(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() watch_id = param[1] if watch_id is None: return web.notfound() if not validates_watch(self): self.logger.debug("Change watch failed. Did not validate.") return web.badrequest(self.view.alert) watch = w_findby1(self.orm, watch_id) ## text watch.name = self.input.watch_name watch.continuation_count = self.input.continuation_count watch.prohibition_period = self.input.prohibition_period if is_param(self.input, 'warning_script'): watch.warning_script = self.input.warning_script else: watch.warning_script = "" if is_param(self.input, 'warning_mail_body'): watch.warning_mail_body = self.input.warning_mail_body else: watch.warning_mail_body = "" if is_param(self.input, 'failure_script'): watch.failure_script = self.input.failure_script else: watch.failure_script = "" if is_param(self.input, 'failure_mail_body'): watch.failure_mail_body = self.input.failure_mail_body else: watch.failure_mail_body = "" if is_param(self.input, 'okay_script'): watch.okay_script = self.input.okay_script else: watch.okay_script = "" if is_param(self.input, 'okay_mail_body'): watch.okay_mail_body = self.input.okay_mail_body else: watch.okay_mail_body = "" if is_param(self.input, 'notify_mail_to'): watch.notify_mail_to = self.input.notify_mail_to else: watch.notify_mail_to = "" if is_param(self.input, 'notify_mail_from'): watch.notify_mail_from = self.input.notify_mail_from else: watch.notify_mail_from = "" threshold_val1 = self.input.threshold_val1 threshold_val2 = self.input.threshold_val2 threshold_type = self.input.threshold_type if threshold_type == "max": warning_value = create_threshold_value(min_value=None, max_value=threshold_val1) failure_value = create_threshold_value(min_value=None, max_value=threshold_val2) elif threshold_type == "min": warning_value = create_threshold_value(min_value=threshold_val2, max_value=None) failure_value = create_threshold_value(min_value=threshold_val1, max_value=None) else: self.logger.debug("Update watch failed. Unknown threshold type.") return web.badrequest() watch.warning_value = warning_value watch.failure_value = failure_value ## bool bool_input_key = [ "use_percentage", "enable_warning_mail", "enable_failure_mail", "enable_okay_mail", "enable_warning_script", "enable_failure_script", "enable_okay_script" ] bool_values = {} for key in bool_input_key: if self.input.has_key(key): bool_values.update({key: True}) else: bool_values.update({key: False}) watch.is_warning_percentage = bool_values.get("use_percentage") watch.is_warning_script = bool_values.get("enable_warning_script") watch.is_warning_mail = bool_values.get("enable_warning_mail") watch.is_failure_percentage = bool_values.get("use_percentage") watch.is_failure_script = bool_values.get("enable_failure_script") watch.is_failure_mail = bool_values.get("enable_failure_mail") watch.is_okay_script = bool_values.get("enable_okay_script") watch.is_okay_mail = bool_values.get("enable_okay_mail") w_update(self.orm, watch) plugin = watch.plugin plugin_selector = watch.plugin_selector modules = ["collectdplugin"] host = m_findbyhost1(self.orm, host_id) extra_args = {'include': '^threshold_'} #extra_args = {} dop = read_conf(modules, webobj=self, machine=host, extra_args=extra_args) if dop is False: self.logger.debug("Change watch failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read Conf)') params = {} if threshold_type == "max": params['WarningMax'] = str(threshold_val1) params['FailureMax'] = str(threshold_val2) elif threshold_type == "min": params['WarningMin'] = str(threshold_val2) params['FailureMin'] = str(threshold_val1) params['Percentage'] = str(bool_values.get("use_percentage")).lower() params['Persist'] = "true" delete_threshold(plugin, plugin_selector, dop=dop, webobj=self, host=host) set_threshold(plugin, plugin_selector, params, dop=dop, webobj=self, host=host) extra_args = {} command = "/etc/init.d/collectd condrestart" extra_args = {"post-command": command} retval = write_conf(dop, webobj=self, machine=host, extra_args=extra_args) if retval is False: self.logger.debug("Change watch failed. Failed write conf.") return web.internalerror('Internal Server Error. (Write Conf)') return web.accepted()
def _PUT(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() if not validates_general(self): self.logger.debug("Change network general failed. Did not validate.") return web.badrequest(self.view.alert) modules = ["network","resolv","hosts"] host = findbyhost1(self.orm, host_id) dop = read_conf(modules, self, host) if dop is False: self.logger.error("Change network general failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read Conf)') gateway = self.input.gateway hostname = self.input.fqdn nameservers = self.input.nameserver.strip().split() domainname = re.sub("^[^\.]+\.","",hostname) hostname_short = re.sub("\.%s$" % (domainname), "", hostname) old_domainname = dop.get("resolv" ,["domain"]) if old_domainname is False: old_domainname = dop.get("network" ,["DOMAINNAME"]) if old_domainname is False: old_domainname = re.sub("^[^\.]+\.","",os.uname()[1]) old_hostname = dop.get("network" ,["HOSTNAME"]) if old_hostname is False: old_hostname = os.uname()[1] old_hostname_short = re.sub("\.%s$" % (old_domainname), "", old_hostname) # hosts hosts_arr = dop.getconf("hosts") for _k,_v in hosts_arr.iteritems(): _host = dop.get("hosts",[_k]) _value = _host[0] _comment = _host[1] _values = _value.strip().split() new_values = [] for _entry in _values: if _entry == old_hostname: _entry = hostname elif _entry == old_hostname_short: _entry = hostname_short new_values.append(_entry) new_value = " ".join(new_values) dop.set("hosts" ,[_k] ,[new_value,_comment]) dop.set("network" ,["GATEWAY"] ,gateway) dop.set("resolv" ,["nameserver"] ,nameservers) dop.set("resolv" ,["domain"] ,domainname) dop.set("network" ,["DOMAINNAME"] ,domainname) dop.set("network" ,["HOSTNAME"] ,hostname) retval = write_conf(dop, self, host) if retval is False: self.logger.error("Change network general failed. Failed write conf.") return web.internalerror('Internal Server Error. (Write Conf)') return web.accepted(url=web.ctx.path)
def _POST(self, *param, **params): host_id = self.chk_hostby1(param) if host_id is None: return web.notfound() if not validates_watch(self): self.logger.debug("Set watch failed. Did not validate.") return web.badrequest(self.view.alert) plugin = self.input.watch_target plugin_instance = None type = None type_instance = None plugin_ds = None libvirt_host = None if plugin == COLLECTD_PLUGIN_CPU: #cpu method plugin_instance = string.atoi(self.input.logical_cpu_number) - 1 type_instance = self.input.cpu_status type = COLLECTD_CPU_TYPE plugin_ds = COLLECTD_CPU_DS elif plugin == COLLECTD_PLUGIN_MEMORY: #memory method type_instance = self.input.memory_status type = COLLECTD_MEMORY_TYPE plugin_ds = COLLECTD_MEMORY_DS elif plugin == COLLECTD_PLUGIN_DF: #df method type = COLLECTD_DF_TYPE type_instance = self.input.df_target_fs type_instance = re.sub(r'^/dev/', '', type_instance) type_instance = re.sub(r'/', '_', type_instance) plugin_ds = self.input.df_disk_status elif plugin == COLLECTD_PLUGIN_INTERFACE: #interface method type = self.input.network_status type_instance = self.input.network_target_interface plugin_ds = self.input.network_direction elif plugin == COLLECTD_PLUGIN_LIBVIRT: #libvirt method libvirt_host = self.input.libvirt_target_machine if self.input.libvirt_target == "cpu": if self.input.libvirt_vcpu_target == "total": type = COLLECTD_LIBVIRT_TYPE['CPU_TOTAL'] else: type = COLLECTD_LIBVIRT_TYPE['VCPU'] type_instance = self.input.libvirt_vcpu_target plugin_ds = COLLECTD_CPU_DS elif self.input.libvirt_target == "disk": type = COLLECTD_LIBVIRT_TYPE['DISK_OCTETS'] type_instance = self.input.libvirt_disk_target plugin_ds = self.input.libvirt_disk_value_type elif self.input.libvirt_target == "network": type = "if_" + self.input.libvirt_network_status type_instance = self.input.libvirt_target_interface plugin_ds = self.input.libvirt_network_direction elif plugin == COLLECTD_PLUGIN_LOAD: #load method type = COLLECTD_LOAD_TYPE plugin_ds = self.input.load_term else: self.logger.debug("Set watch failed. Unknown plugin type.") return web.badrequest() plugin_selector = create_plugin_selector(plugin_instance, type, type_instance, plugin_ds, libvirt_host) ## text continuation_count = self.input.continuation_count prohibition_period = self.input.prohibition_period threshold_val1 = self.input.threshold_val1 threshold_val2 = self.input.threshold_val2 threshold_type = self.input.threshold_type if is_param(self.input, 'warning_script'): warning_script = self.input.warning_script else: warning_script = "" if is_param(self.input, 'warning_mail_body'): warning_mail_body = self.input.warning_mail_body else: warning_mail_body = "" if is_param(self.input, 'failure_script'): failure_script = self.input.failure_script else: failure_script = "" if is_param(self.input, 'failure_mail_body'): failure_mail_body = self.input.failure_mail_body else: failure_mail_body = "" if is_param(self.input, 'okay_script'): okay_script = self.input.okay_script else: okay_script = "" if is_param(self.input, 'okay_mail_body'): okay_mail_body = self.input.okay_mail_body else: okay_mail_body = "" if is_param(self.input, 'notify_mail_to'): notify_mail_to = self.input.notify_mail_to else: notify_mail_to = "" if is_param(self.input, 'notify_mail_from'): notify_mail_from = self.input.notify_mail_from else: notify_mail_from = "" ## bool bool_input_key = [ "use_percentage", "enable_warning_mail", "enable_failure_mail", "enable_okay_mail", "enable_warning_script", "enable_failure_script", "enable_okay_script" ] bool_values = {} for key in bool_input_key: if self.input.has_key(key): bool_values.update({key: True}) else: bool_values.update({key: False}) if threshold_type == "max": warning_value = create_threshold_value(min_value=None, max_value=threshold_val1) failure_value = create_threshold_value(min_value=None, max_value=threshold_val2) elif threshold_type == "min": warning_value = create_threshold_value(min_value=threshold_val2, max_value=None) failure_value = create_threshold_value(min_value=threshold_val1, max_value=None) else: self.logger.debug("Set watch failed. Unknown threshold type.") return web.badrequest() machine = m_findby1(self.orm, host_id) if w_is_uniq_duplication(self.orm, machine, plugin, plugin_selector) is True: self.logger.debug("Set watch failed. Duplicate watch DB.") return web.badrequest("Set watch failed. Duplication watch") _watch = w_new( created_user=self.me, modified_user=self.me, name=self.input.watch_name, plugin=plugin, plugin_selector=plugin_selector, karesansui_version=get_karesansui_version(), collectd_version=get_collectd_version(), machine=machine, continuation_count=continuation_count, prohibition_period=prohibition_period, warning_value=warning_value, is_warning_percentage=bool_values.get("use_percentage"), is_warning_script=bool_values.get("enable_warning_script"), warning_script=warning_script, is_warning_mail=bool_values.get("enable_warning_mail"), warning_mail_body=warning_mail_body, failure_value=failure_value, is_failure_percentage=bool_values.get("use_percentage"), is_failure_script=bool_values.get("enable_failure_script"), failure_script=failure_script, is_failure_mail=bool_values.get("enable_failure_mail"), failure_mail_body=failure_mail_body, is_okay_script=bool_values.get("enable_okay_script"), okay_script=okay_script, is_okay_mail=bool_values.get("enable_okay_mail"), okay_mail_body=okay_mail_body, notify_mail_to=notify_mail_to, notify_mail_from=notify_mail_from, is_deleted=False, ) w_save(self.orm, _watch) modules = ["collectdplugin"] host = m_findbyhost1(self.orm, host_id) extra_args = {'include': '^threshold_'} #extra_args = {} dop = read_conf(modules, webobj=self, machine=host, extra_args=extra_args) if dop is False: self.logger.debug("Set watch failed. Failed read conf.") return web.internalerror('Internal Server Error. (Read Conf)') params = {} if threshold_type == "max": params['WarningMax'] = str(threshold_val1) params['FailureMax'] = str(threshold_val2) elif threshold_type == "min": params['WarningMin'] = str(threshold_val2) params['FailureMin'] = str(threshold_val1) params['Percentage'] = str(bool_values.get("use_percentage")).lower() params['Persist'] = "true" set_threshold(plugin, plugin_selector, params, dop=dop, webobj=self, host=host) extra_args = {} command = "/etc/init.d/collectd condrestart" extra_args = {"post-command": command} retval = write_conf(dop, webobj=self, machine=host, extra_args=extra_args) if retval is False: self.logger.debug("Set watch failed. Failed write conf.") return web.internalerror('Internal Server Error. (Write Conf)') return web.created(None)