/****************************************************************************** * * * Function: op_group_del * * * * Purpose: delete group from discovered host * * * * Parameters: event - [IN] event data * * groupid - [IN] group identificator from database * * * * Author: Alexei Vladishev * * * ******************************************************************************/ void op_group_del(DB_EVENT *event, zbx_uint64_t groupid) { const char *__function_name = "op_group_del"; zbx_uint64_t hostid; zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __function_name); if (event->source != EVENT_SOURCE_DISCOVERY) return; if (event->object != EVENT_OBJECT_DHOST && event->object != EVENT_OBJECT_DSERVICE) return; if (0 == (hostid = select_discovered_host(event))) return; DBexecute( "delete from hosts_groups" " where hostid=" ZBX_FS_UI64 " and groupid=" ZBX_FS_UI64, hostid, groupid); zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __function_name); }
/****************************************************************************** * * * Function: op_host_del * * * * Purpose: delete host * * * * Author: Eugene Grigorjev * * * ******************************************************************************/ void op_host_del(const DB_EVENT *event) { const char *__function_name = "op_host_del"; zbx_vector_uint64_t hostids; zbx_uint64_t hostid; zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __function_name); if (event->source != EVENT_SOURCE_DISCOVERY) return; if (event->object != EVENT_OBJECT_DHOST && event->object != EVENT_OBJECT_DSERVICE) return; if (0 == (hostid = select_discovered_host(event))) return; zbx_vector_uint64_create(&hostids); zbx_vector_uint64_append(&hostids, hostid); DBdelete_hosts(&hostids); zbx_vector_uint64_destroy(&hostids); zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __function_name); }
/****************************************************************************** * * * Function: op_groups_del * * * * Purpose: delete groups from discovered host * * * * Parameters: event - [IN] event data * * groupids - [IN] IDs of groups to delete * * * * Author: Alexei Vladishev * * * ******************************************************************************/ void op_groups_del(const DB_EVENT *event, zbx_vector_uint64_t *groupids) { const char *__function_name = "op_groups_del"; DB_RESULT result; zbx_uint64_t hostid; char *sql = NULL; size_t sql_alloc = 256, sql_offset = 0; zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __function_name); if (event->source != EVENT_SOURCE_DISCOVERY) return; if (event->object != EVENT_OBJECT_DHOST && event->object != EVENT_OBJECT_DSERVICE) return; if (0 == (hostid = select_discovered_host(event))) return; sql = zbx_malloc(sql, sql_alloc); /* make sure host belongs to at least one hostgroup */ zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "select groupid" " from hosts_groups" " where hostid=" ZBX_FS_UI64 " and not", hostid); DBadd_condition_alloc(&sql, &sql_alloc, &sql_offset, "groupid", groupids->values, groupids->values_num); result = DBselectN(sql, 1); if (NULL == DBfetch(result)) { zabbix_log(LOG_LEVEL_WARNING, "cannot remove host \"%s\" from all host groups:" " it must belong to at least one", zbx_host_string(hostid)); } else { sql_offset = 0; zbx_snprintf_alloc(&sql, &sql_alloc, &sql_offset, "delete from hosts_groups" " where hostid=" ZBX_FS_UI64 " and", hostid); DBadd_condition_alloc(&sql, &sql_alloc, &sql_offset, "groupid", groupids->values, groupids->values_num); DBexecute("%s", sql); } DBfree_result(result); zbx_free(sql); zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __function_name); }
/****************************************************************************** * * * Function: op_template_del * * * * Purpose: unlink and clear host from template * * * * Parameters: event - [IN] event data * * templateid - [IN] host template identificator from database * * * * Author: Eugene Grigorjev * * * ******************************************************************************/ void op_template_del(DB_EVENT *event, zbx_uint64_t templateid) { const char *__function_name = "op_template_del"; zbx_uint64_t hostid; zabbix_log(LOG_LEVEL_DEBUG, "In %s()", __function_name); if (event->source != EVENT_SOURCE_DISCOVERY) return; if (event->object != EVENT_OBJECT_DHOST && event->object != EVENT_OBJECT_DSERVICE) return; if (0 == (hostid = select_discovered_host(event))) return; DBdelete_template_elements(hostid, templateid); zabbix_log(LOG_LEVEL_DEBUG, "End of %s()", __function_name); }