def appendSlave(self, msgHeader, nodename=None): """ append oid to slave list """ if nodename: if nodename in zapi.getRoot(self): newSlaveNode = zapi.getRoot(self)[nodename] else: #self.oidSlave = msgHeader['from_oid'] newSlaveNode = createObject(\ u"org.ict_ok.slave.slave.Slave") ISlave['objectID'].readonly = False newSlaveNode.objectID = msgHeader['from_oid'] ISlave['objectID'].readonly = True newSlaveNode.ikName = unicode(nodename) notify(ObjectCreatedEvent(newSlaveNode)) zapi.getRoot(self)[nodename] = newSlaveNode slaveSupervisor = zapi.queryUtility(IAdmUtilSupervisor, context=newSlaveNode) if slaveSupervisor: #slaveSupervisor.ipv4Master = msgHeader['to_ip'] #slaveSupervisor.oidMaster = msgHeader['to_oid'] slaveSupervisor.status2Master = u"connected" slaveSupervisor.ipv4Slave = msgHeader['from_ip'] slaveSupervisor.oidSlave = msgHeader['from_oid'] slaveSupervisor.lastSeenSlave = datetime.now(berlinTZ) self._p_changed = True mq_utility = zapi.queryUtility(IAdmUtilObjMQ) if mq_utility: my_data = {'cmd': 'connected'} my_data['header'] = mq_utility.switchFromTo(msgHeader) mq_utility.sendPerMq(my_data)
def sendPong(self, msgHeader, nodename=None): """ revert message header and sends a pong as response to the ping """ if nodename: if nodename in zapi.getRoot(self): newSlaveNode = zapi.getRoot(self)[nodename] slaveSupervisor = zapi.queryUtility(IAdmUtilSupervisor, context=newSlaveNode) if slaveSupervisor: slaveSupervisor.lastSeenMaster = datetime.now(berlinTZ) mq_utility = zapi.queryUtility(IAdmUtilObjMQ) if mq_utility: my_data = {'cmd': 'pong'} my_data['header'] = mq_utility.switchFromTo(msgHeader) mq_utility.sendPerMq(my_data)
def allConfigFilesOut(self, forceOutput=False, event=None, genOutput=True): """make configuration file return True if any value has changed """ valueChanged = forceOutput # start config file header utcTZ = timezone('UTC') starttimeCfg = datetime.datetime.now(utcTZ) if genOutput: fpCfg = codecs.open(u'/opt/smokeping/etc/ict_ok/ict.cfg', 'w', encoding='utf-8') fpCfg.write(u"# generated by ict-ok.org Ver. %s (%s)\n\n" % (getIkVersion(), starttimeCfg)) fpCfg.write(u"# ----------------------------------------\n") fpCfg.close() # start config file main parts its = zapi.getRoot(self).items() for (dummy_name, oobj) in its: if ISupernode.providedBy(oobj): try: adapterGenSmokePing = IGenSmokePing(oobj) if adapterGenSmokePing: adapterGenSmokePing.genOutput = genOutput if adapterGenSmokePing.smokepingConfigFileOut(\ forceOutput, event): valueChanged = True except TypeError, errText: logger.error(u"Problem in adaption of smokeping conf: %s" %\ (errText))
def __BBB_old_getComponent(self, path): service_manager = zapi.getSiteManager(self) # Get the root and unproxy it if path.startswith("/"): # Absolute path root = removeAllProxies(zapi.getRoot(service_manager)) component = zapi.traverse(root, path) else: # Relative path. ancestor = self.__parent__.__parent__ component = zapi.traverse(ancestor, path) if self.permission: if type(component) is Proxy: # There should be at most one security Proxy around an object. # So, if we're going to add a new security proxy, we need to # remove any existing one. component = removeSecurityProxy(component) interface = self.getInterface() checker = InterfaceChecker(interface, self.permission) component = Proxy(component, checker) return component
def fillDotFile(self, pdId, dotFile, mode=None): """generate the dot file """ print >> dotFile, '// GraphViz DOT-File' print >> dotFile, 'digraph "%s" {' % (zapi.getRoot(self).__name__) if mode and mode.lower() == "fview": print >> dotFile, '\tgraph [bgcolor="#E5FFF9", dpi="100.0"];' else: print >> dotFile, '\tgraph [bgcolor="#E5FFF9", size="6.2,5.2",' +\ ' splines="true", ratio = "auto", dpi="100.0"];' print >> dotFile, '\tedge [style = "setlinewidth(2)", color = gray];' print >> dotFile, '\trankdir = LR;' if AdmUtilWFMC.wf_pd_dict.has_key(pdId): procd = AdmUtilWFMC.wf_pd_dict[pdId] for i in procd.activities: adapterGenDot = IGenWFMCDot(procd.activities[i]) if adapterGenDot: adapterGenDot.traverse4DotGenerator(\ dotFile, level=1, comments=True) for i in procd.transitions: adapterGenDot = IGenWFMCDot(i) if adapterGenDot: adapterGenDot.traverse4DotGenerator(\ dotFile, level=1, comments=True) print >> dotFile, '}' dotFile.flush()
def virtualHostTree(self): """Cookie tree with only folders and the root container as root node. """ vh = self.request.getVirtualHostRoot() if vh: return self.folderTree(vh) else: root = zapi.getRoot(self.context) return self.folderTree(root)
def fillDotFile(self, objList, dotFile): """generate the dot file """ print >> dotFile, '// GraphViz DOT-File' print >> dotFile, 'graph "%s" {' % (zapi.getRoot(self).__name__) print >> dotFile, '\tgraph [bgcolor="#E5FFF9"];' print >> dotFile, '\tedge [style = "setlinewidth(2)", color = gray];' print >> dotFile, '\trankdir = LR;' for (dummy_name, oobj) in objList: if ISupernode.providedBy(oobj): try: adapterGenGraphvizDot = IGenGraphvizDot(oobj) if adapterGenGraphvizDot: adapterGenGraphvizDot.setParent(zapi.getRoot(self)) adapterGenGraphvizDot.traverse4DotGenerator(\ dotFile, level=1, comments=False) except TypeError, err: logger.error("TypeError in fillDotFile() [%s]" % err)
def allConfigFilesOut(self): """make configuration file """ self.touchLastConfigFile() its = zapi.getRoot(self).items() for (dummy_name, oobj) in its: if ISupernode.providedBy(oobj): try: adapterGenNagios = IGenNagios(oobj) if adapterGenNagios: adapterGenNagios.nagiosConfigFileOut(True, None) except TypeError, errText: logger.error(u"Problem in adaption of nagios config: %s" %\ (errText))
def getConfig(self): """make configuration file TODO filename or filehandle must be an argument """ dtHostCfg = datetime.now(berlinTZ) #fpHostCfg = open(u'/opt/ikomtrol/etc/Host.cfg', 'w+') fpHostCfg = open(u'/opt/nagios/etc/ict_ok/Host.cfg', 'w+') fpHostCfg.write(u"# Host.cfg\n") fpHostCfg.write(u"# generated by ict-ok.org Ver. %s (%s)\n\n" % (getIkVersion(), dtHostCfg)) dtHostGroupCfg = datetime.now(berlinTZ) #fpHostGroupCfg = open(u'/opt/ikomtrol/etc/HostGroup.cfg', 'w+') fpHostGroupCfg = open(u'/opt/nagios/etc/ict_ok/HostGroup.cfg', 'w+') fpHostGroupCfg.write(u"# HostGroup.cfg\n") fpHostGroupCfg.write(u"# generated by ict-ok.org Ver. %s (%s)\n\n" % (getIkVersion(), dtHostGroupCfg)) fpHostGroupCfg.write(u"define hostgroup {\n") fpHostGroupCfg.write(u" hostgroup_name IKOMtrol\n") fpHostGroupCfg.write(u" alias IKOMtrol-Systeme\n") fpHostGroupCfg.write(u" members ") dtServiceCfg = datetime.now(berlinTZ) #fpServiceCfg = open(u'/opt/ikomtrol/etc/Service.cfg', 'w+') fpServiceCfg = open(u'/opt/nagios/etc/ict_ok/Service.cfg', 'w+') fpServiceCfg.write(u"# Service.cfg\n") fpServiceCfg.write(u"# generated by ict-ok.org Ver. %s (%s)\n\n" % (getIkVersion(), dtServiceCfg)) fileDict = { 'HostCfg': fpHostCfg, 'HostGroupCfg': fpHostGroupCfg, 'ServiceCfg': fpServiceCfg } #cfgFile = open('/tmp/cfgNagiosFile', 'w') #import pdb; pdb.set_trace() its = zapi.getRoot(self).items() for (dummy_name, oobj) in its: if ISupernode.providedBy(oobj): try: adapterGenNagios = IGenNagios(oobj) if adapterGenNagios: adapterGenNagios.traverse4nagiosGenerator( fileDict, level=1, comments=False) except TypeError, errText: logger.error(u"Problem in adaption of nagios config: %s" %\ (errText))
def getConfig(self): """make configuration file TODO filename or filehandle must be an argument """ cfgFile = open('/tmp/cfgFile', 'w') its = zapi.getRoot(self).items() for (dummy_name, oobj) in its: if ISupernode.providedBy(oobj): try: adapterGenHoneyd = IIKGenHoneyd(oobj) if adapterGenHoneyd: adapterGenHoneyd.traverse4honeydGenerator( cfgFile, level=1, comments=True) except TypeError: logger.error(u"Problem in adaption of honeyd config") cfgFile.flush() cfgFile.close() return "aaa"
def generateAllPdf(self, absFilename, authorStr, versionStr): """ will generate a complete pdf report """ files2delete = [] document = RptDocument(absFilename) #document.setVolumeNo("1") document.setAuthorName(authorStr) document.setVersionStr(versionStr) its = zapi.getRoot(self).items() for (dummy_name, oobj) in its: if ISupernode.providedBy(oobj): try: adapterRptPdf = IRptPdf(oobj) if adapterRptPdf: adapterRptPdf.document = document adapterRptPdf.traverse4Rpt(1, False) files2delete.extend(adapterRptPdf.files2delete) del adapterRptPdf except TypeError, errText: logger.error(u"Problem in adaption of pdf report: %s" %\ (errText))
def fillDotFile(self, dotFile, mode=None): """generate the dot file """ my_catalog = zapi.getUtility(ICatalog) objIdSet = set() objSet = set() eventSet = set() for (oid, oobj) in self.items(): objIdSet.add(oid) for objId in self.inpEQueues: objIdSet.add(objId) for objId in self.outEQueues: objIdSet.add(objId) for objId in objIdSet: for result in my_catalog.searchResults(oid_index=objId): if IAdmUtilEvent.providedBy(result): eventSet.add(result) elif IEventLogic.providedBy(result): objSet.add(result) elif IEventLogic.providedBy(result): objSet.add(result) elif IComponent.providedBy(result): if result.isConnectedToEvent(): objSet.add(result) else: pass print >> dotFile, '// GraphViz DOT-File' print >> dotFile, 'digraph "%s" {' % (zapi.getRoot(self).__name__) if mode and mode.lower() == "fview": print >> dotFile, '\tgraph [bgcolor="#E5FFF9", dpi="100.0"];' else: print >> dotFile, '\tgraph [bgcolor="#E5FFF9", size="6.2,5.2",' +\ ' splines="true", ratio = "auto", dpi="100.0"];' print >> dotFile, '\tnode [fontname = "Helvetica",fontsize = 10];' print >> dotFile, '\tedge [style = "setlinewidth(2)", color = black];' print >> dotFile, '\trankdir = LR;' print >> dotFile, '\t// objects ----------------------------------' for obj in objSet: objGraphvizDot = IGenGraphvizDot(obj) objGraphvizDot.traverse4DotGenerator(dotFile, level=1, comments=True, signalsOutput=True, recursive=False) #print "-" * 80 #uidutil = zapi.getUtility(IIntIds) #print >> dotFile, '\t// locations ----------------------------------' #for (oid, oobj) in uidutil.items(): #if ILocation.providedBy(oobj.object): #print "Location: ", oobj.object.ikName #print >> dotFile, \ #'\tsubgraph "cluster_location" { color=blue; label="location"};' ##elif IRoom.providedBy(oobj.object): ##print "Room: ", oobj.object.ikName ##elif ILocation.providedBy(oobj.object): ##print "Location: ", oobj.object.ikName #print "-" * 80 print >> dotFile, '\t// events ----------------------------------' for event in eventSet: eventGraphvizDot = IGenGraphvizDot(event) eventGraphvizDot.traverse4DotGenerator(dotFile, level=1, comments=True) for obj in objSet: allInpNamesDict = obj.getAllInpEventNames() allOutNamesDict = obj.getAllOutEventNames() for inpName in allInpNamesDict.keys(): for iObj in allInpNamesDict[inpName]: print >> dotFile, '\t "%s"-> "%s":"%s"' % ( iObj, obj.objectID, inpName) for outName in allOutNamesDict.keys(): for iObj in allOutNamesDict[outName]: print >> dotFile, '\t "%s":"%s"-> "%s"' % (obj.objectID, outName, iObj) print >> dotFile, '}' dotFile.flush()
def apidocTree(self): root = zapi.getRoot(self.context)['apidoc'] filter = PreferenceGroupFilter() return self.cookieTree(root, filter)
def rootTree(self): """Cookie tree with only folders and the root container as root node. """ root = zapi.getRoot(self.context) return self.folderTree(root)
def getCmapxText(self): """get dot file and convert to client side image map """ return self.context.getCmapxText(zapi.getRoot(self))
def getPngFile(self): """get dot file and convert to png """ return self.context.getPngFile(zapi.getRoot(self))