X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=monitor%2Fdatabase%2Fzabbixapi%2Fmodel.py;h=674e2c294a02ec792537f73e5430f3a0e773c431;hb=334378a14103c3fd02332b6ce3767553f1fe11d2;hp=3d6bd4070f4f1e2461a9db14d7a3d71e3c4c16c9;hpb=a06427d1c9506ee93888e8f2f80b6c4bdd134527;p=monitor.git diff --git a/monitor/database/zabbixapi/model.py b/monitor/database/zabbixapi/model.py index 3d6bd40..674e2c2 100644 --- a/monitor/database/zabbixapi/model.py +++ b/monitor/database/zabbixapi/model.py @@ -22,7 +22,10 @@ options_defaults['autosetup'] = False from elixir.statements import Statement from sqlalchemy import Sequence -import defines +try: + import defines +except: + print "WARNING: no defines.py available" from monitor.database.dborm import zab_metadata, zab_session @@ -235,6 +238,7 @@ class ZabbixEntity(ZabbixSerialize): fieldname = self._descriptor.auto_primarykey index = IDs.get_by(table_name=tablename, field_name=fieldname) if not index: + print "NEW IDs index INSIDE INIT" index = IDs(table_name=tablename, field_name=fieldname, nodeid=0, nextid=10) index.flush() index.nextid = index.nextid + 1 @@ -422,6 +426,42 @@ class IDs(Entity): autoload=True, ) +class Escalation(ZabbixEntity): + using_options( + tablename='escalations', + autoload=True, + auto_primarykey='escalationid' + ) + +class Event(ZabbixEntity): + using_options( + tablename='events', + autoload=True, + auto_primarykey='eventid' + ) + +class Item(ZabbixEntity): + using_options( + tablename='items', + autoload=True, + auto_primarykey='itemid' + ) + +class Acknowledge(ZabbixEntity): + using_options( + tablename='acknowledges', + autoload=True, + auto_primarykey='acknowledgeid' + ) + +class Trigger(ZabbixEntity): + using_options( + tablename='triggers', + autoload=True, + auto_primarykey='triggerid' + ) + + class Right(ZabbixEntity): # rights of a usergroup to interact with hosts of a hostgroup using_options( @@ -700,7 +740,6 @@ class User(ZabbixEntity): # parent of media ug_row = UsersGroups.get_by(usrgrpid=group.usrgrpid, userid=self.userid) if ug_row is not None: ug_row.delete() - #ug_row.flush() return class UsrGrp(ZabbixEntity): @@ -754,10 +793,42 @@ class UsrGrp(ZabbixEntity): ug_row = UsersGroups.get_by(userid=user.userid, usrgrpid=self.usrgrpid) if ug_row is not None: ug_row.delete() - #ug_row.flush() return +def confirm_ids(): + fields = { + 'scripts' : 'scriptid', + 'usrgrp' : 'usrgrpid', + 'users' : 'userid', + 'media' : 'mediaid', + 'users_groups' : 'id', + 'groups' : 'groupid', + 'rights' : 'rightid', + 'drules' : 'druleid', + 'dchecks' : 'dcheckid', + 'actions' : 'actionid', + 'conditions' : 'conditionid', + 'operations' : 'operationid', + 'opconditions' : 'opconditionid', + } + need_to_flush = False + + for tablename in fields.keys(): + fieldname = fields[tablename] + + index = IDs.get_by(table_name=tablename, field_name=fieldname) + if not index: + print "NEW IDs index INSIDE confirm_ids" + index = IDs(table_name=tablename, field_name=fieldname, nodeid=0, nextid=10) + index.flush() + need_to_flush=True + + if need_to_flush: + zab_session.flush() + + setup_all() +confirm_ids() def get_zabbix_class_from_name(name): em = get_zabbix_entitymap() @@ -784,7 +855,3 @@ class OperationConditionNotAck(object): operator=defines.CONDITION_OPERATOR_EQUAL, value=0 ) # NOT_ACK return o - -#import md5 -#u = User(alias="stephen.soltesz@gmail.com", name="stephen.soltesz@gmail.com", surname="", passwd=md5.md5("test").hexdigest(), url="", autologin=0, autologout=900, lang="en_gb", refresh=30, type=1, theme="default.css") -#u.flush()