コード例 #1
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriberDatabase(event):
    """initialisation of ict_ok supervisor on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)
    madeUtilManager = ensureUtility(root_folder,
                                    IUtilManager,
                                    'UtilManager',
                                    UtilManager,
                                    '',
                                    copy_to_zlog=False,
                                    asObject=True)

    if isinstance(madeUtilManager, UtilManager):
        logger.info(u"bootstrap: Ensure named UtilManager")
        dcore = IWriteZopeDublinCore(madeUtilManager)
        dcore.title = u"ICT_Ok Utility Manager"
        dcore.creators = (u"bootstrap auto-adder", )
        dcore.created = datetime.utcnow()
        madeUtilManager.ikName = dcore.title
        madeUtilManager.__post_init__()

    transaction.get().commit()
    connection.close()
コード例 #2
0
ファイル: bootstrap.py プロジェクト: Zojax/zojax.portal
def bootstrapSubscriber(ev):
    db, connection, root, portal = getInformationFromEvent(ev)

    if portal is None:
        portal = Portal(title=u'Portal')
        interface.alsoProvides(portal, IContainmentRoot)
        event.notify(ObjectCreatedEvent(portal))
        root[ZopePublication.root_name] = portal
        transaction.commit()

        try:
            reconfigurePortal(portal)

            setSite(portal)
            catalog = component.getUtility(IConfiglet, 'system.catalog').catalog
            catalog.clear()
            catalog.updateIndexes()
            setSite(None)
        except:
            del root[ZopePublication.root_name]
            transaction.commit()
            raise

        transaction.commit()

    connection.close()

    event.notify(DatabaseOpenedWithRoot(db))
コード例 #3
0
ファイル: tests.py プロジェクト: wpjunior/proled
    def test_ensureUtility(self):
        self.createRFAndSM()

        db, connection, root, root_folder = getInformationFromEvent(
            EventStub(self.db))

        # TODO: check EventSub
        root_folder = self.root_folder
        for i in range(2):
            cx = self.db.open()
            name = ensureUtility(root_folder, IErrorReportingUtility,
                                 'ErrorReporting', ErrorReportingUtility,
                                 'ErrorReporting')

            if i == 0:
                self.assertEqual(name, 'ErrorReporting')
            else:
                self.assertEqual(name, None)

            root = cx.root()
            root_folder = root[ZopePublication.root_name]

            package_name = '/++etc++site/default'
            package = traverse(self.root_folder, package_name)

            self.assert_(IErrorReportingUtility.providedBy(
                traverse(package, 'ErrorReporting')))
            transaction.commit()

        cx.close()
コード例 #4
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriber(event):
    """initialisation of IntId utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)
    # search in global component registry
    sitem = root_folder.getSiteManager()
    # search for ICatalog
    utils = [
        util for util in sitem.registeredUtilities()
        if util.provided.isOrExtends(ICatalog)
    ]
    instUtilityICatalog = utils[0].component
    if not "host_esxuuid_index" in instUtilityICatalog.keys():
        host_esxuuid_index = TextIndex(interface=ISearchableText,
                                       field_name='getSearchableHostEsxUuid',
                                       field_callable=True)
        instUtilityICatalog['host_esxuuid_index'] = host_esxuuid_index
        # search for IAdmUtilSupervisor
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: ICatalog - create esx uuid index for entry type 'vmware_esx'")
    # creates and stores the local system in ZODB
    # createLocalSystem(root_folder)

    transaction.get().commit()
    connection.close()
コード例 #5
0
def bootStrapSubscriberDatabase(event):
    """initialisation of eventcrossbar utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)

    madeAdmUtilCompliance = ensureUtility(root_folder,
                                          IAdmUtilCompliance,
                                          'AdmUtilCompliance',
                                          AdmUtilCompliance,
                                          '',
                                          copy_to_zlog=False,
                                          asObject=True)

    if isinstance(madeAdmUtilCompliance, AdmUtilCompliance):
        logger.info(u"bootstrap: Ensure named AdmUtilCompliance")
        dcore = IWriteZopeDublinCore(madeAdmUtilCompliance)
        dcore.title = u"Compliance Utiltiy"
        dcore.created = datetime.utcnow()
        madeAdmUtilCompliance.ikName = dcore.title
        madeAdmUtilCompliance.__post_init__()
        sitem = root_folder.getSiteManager()
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: made Compliance Utiltiy")
    else:
        ## search in global component registry
        #sitem = root_folder.getSiteManager()
        ## search for ICatalog
        #utils = [ util for util in sitem.registeredUtilities()
        #if util.provided.isOrExtends(ICatalog)]
        #instUtilityICatalog = utils[0].component
        #if not "host_oid_index" in instUtilityICatalog.keys():
        #host_oid_index = FieldIndex(interface=ISearchableText,
        #field_name='getSearchableHostOid',
        #field_callable=True)
        #instUtilityICatalog['host_oid_index'] = host_oid_index
        ## search for IAdmUtilSupervisor
        #utils = [ util for util in sitem.registeredUtilities()
        #if util.provided.isOrExtends(IAdmUtilSupervisor)]
        #instAdmUtilSupervisor = utils[0].component
        #instAdmUtilSupervisor.appendEventHistory(\
        #u" bootstrap: ICatalog - create oid index for entry type 'host'")
        if False:
            sitem = root_folder.getSiteManager()
            utils = [
                util for util in sitem.registeredUtilities()
                if util.provided.isOrExtends(IAdmUtilCompliance)
            ]
            instAdmUtilCompliance = utils[0].component
            logger.info(u"replacing all Requirements")
            fillUtilitiyWithReqs(instAdmUtilCompliance)
    transaction.get().commit()
    connection.close()
コード例 #6
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriberDatabase(event):
    """initialisation of Message-Queue-Utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)

    madeNotifier = ensureUtility(root_folder,
                                 INotifierUtil,
                                 'Notifier',
                                 NotifierUtil,
                                 '',
                                 copy_to_zlog=False,
                                 asObject=True)

    if isinstance(madeNotifier, NotifierUtil):
        logger.info(u"bootstrap: Ensure named Notifier")
        dcore = IWriteZopeDublinCore(madeNotifier)
        dcore.title = u"Notifier"
        dcore.created = datetime.utcnow()
        madeNotifier.ikName = dcore.title
        madeNotifier.__post_init__()
        sitem = root_folder.getSiteManager()
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: made INotifier-Utility")

    transaction.get().commit()
    connection.close()
コード例 #7
0
def adminSetup(event):
    from zope.app.appsetup.bootstrap import getInformationFromEvent

    db, connection, root, root_folder = getInformationFromEvent(event)
    principal_credentials = getPrincipalCredentialsFromZCML()
    setupSessionAuthentication(root_folder=root_folder,
                               principal_credentials=principal_credentials)
コード例 #8
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriberDatabase(event):
    """initialisation of linux_ha utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    LinuxHaConnectionThread.database = event.database
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)

    madeAdmUtilLinuxHa = ensureUtility(root_folder,
                                       IAdmUtilLinuxHa,
                                       'AdmUtilLinuxHa',
                                       AdmUtilLinuxHa,
                                       '',
                                       copy_to_zlog=False,
                                       asObject=True)

    if isinstance(madeAdmUtilLinuxHa, AdmUtilLinuxHa):
        logger.info(u"bootstrap: Ensure named AdmUtilLinuxHa")
        dcore = IWriteZopeDublinCore(madeAdmUtilLinuxHa)
        dcore.title = u"Linux HA"
        dcore.created = datetime.utcnow()
        madeAdmUtilLinuxHa.ikName = dcore.title
        madeAdmUtilLinuxHa.__post_init__()
        sitem = root_folder.getSiteManager()
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: made IAdmUtilLinuxHa-Utility")
    #else:
    #sitem = root_folder.getSiteManager()
    #utils = [ util for util in sitem.registeredUtilities()
    #if util.provided.isOrExtends(IAdmUtilLinuxHa)]
    #instAdmUtilLinuxHa = utils[0].component
    #instAdmUtilLinuxHa.connect2VimServer()

    #sitem = root_folder.getSiteManager()
    ## search for ICatalog
    #utils = [ util for util in sitem.registeredUtilities()
    #if util.provided.isOrExtends(ICatalog)]
    #instUtilityICatalog = utils[0].component
    #if not "host_esx_uuid_index" in instUtilityICatalog.keys():
    #host_esx_uuid_index = FieldIndex(interface=ISearchableText,
    #field_name='getSearchableEsxUuid',
    #field_callable=True)
    #instUtilityICatalog['host_esx_uuid_index'] = host_esx_uuid_index
    ## search for IAdmUtilSupervisor
    #utils = [ util for util in sitem.registeredUtilities()
    #if util.provided.isOrExtends(IAdmUtilSupervisor)]
    #instAdmUtilSupervisor = utils[0].component
    #instAdmUtilSupervisor.appendEventHistory(\
    #u" bootstrap: ICatalog - create esx uuid index for entry type 'host'")

    #recursiveLinuxHaSubscriber(root_folder)

    transaction.get().commit()
    connection.close()
コード例 #9
0
ファイル: bootstrap.py プロジェクト: Shoobx/cipher.session
def bootStrapSessionDataManager(event):
    """Subscriber to the IDatabaseOpenedWithRoot

    Constraints: this subscriber must be run after
    zope.app.appsetup.session.bootStrapSubscriber

    Adds/replaces the stock zope ISessionDataManager with our custom one.
    """

    db, connection, root, root_folder = getInformationFromEvent(event)

    try:
        # now first get rid of any ISessionDataContainer
        sm = root_folder.getSiteManager()
        utils = [reg for reg in sm.registeredUtilities()
                 if reg.provided.isOrExtends(ISessionDataContainer)
                    and reg.name == '']
        if utils:
            # check our assumptions: there's only one, registered as a component
            assert len(utils) == 1
            assert utils[0].factory is None
            utility = utils[0].component
            sm.unregisterUtility(utility, ISessionDataContainer)

            try:
                del utility.__parent__[utility.__name__]
            except:
                pass
            transaction.commit()

        utils = [reg for reg in sm.registeredUtilities()
                 if reg.provided.isOrExtends(interfaces.ISessionDataManager)
                    and reg.name == '']
        if utils:
            # check our assumptions: there's only one, registered as a component
            assert len(utils) == 1
            assert utils[0].factory is None
            utility = utils[0].component
            if isinstance(utility, SessionDataManager):
                return  # nothing to do
            sm.unregisterUtility(utility, interfaces.ISessionDataManager)

            try:
                del utility.__parent__[utility.__name__]
            except:
                pass

        addConfigureUtility(
            root_folder,
            interfaces.ISessionDataManager, 'SessionDataManager',
            SessionDataManager,
            )

        transaction.commit()
    except:
        transaction.abort()
        raise
    finally:
        connection.close()
コード例 #10
0
ファイル: bootstrap.py プロジェクト: Zojax/zojax.error
def bootStrapSubscriber(event):
    db, connection, root, root_folder = getInformationFromEvent(event)

    ensureUtility(root_folder, IErrorReportingUtility, '',
                  RootErrorReportingUtility, copy_to_zlog=False, asObject=True)

    transaction.commit()
    connection.close()
コード例 #11
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriber(event):
    """initialisation of IntId utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)
    createUtils(root_folder, connection, dummy_db)
コード例 #12
0
ファイル: bootstrap.py プロジェクト: Zojax/zojax.session
def bootStrapSubscriber(event):
    db, connection, root, root_folder = getInformationFromEvent(event)

    ensureUtility(
        root_folder, IClientIdManager, 'CookieClientIdManager',
        CookieClientIdManager, asObject=True)

    transaction.commit()
    connection.close()
コード例 #13
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriberDatabase(event):
    """initialisation of eventcrossbar utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)
    createUtils(root_folder, connection, dummy_db)
    from org.ict_ok.admin_utils.compliance.lxml_demo import lxmlDemo
    lxmlDemo()
コード例 #14
0
def bootStrapSubscriber(event):
    """Subscriber to the IDataBaseOpenedEvent

    Create utility at that time if not yet present
    """
    db, connection, root, root_folder = getInformationFromEvent(event)

    ensureUtility(root_folder, IErrorReportingUtility, '',
                  RootErrorReportingUtility, copy_to_zlog=True)

    transaction.commit()
    connection.close()
コード例 #15
0
ファイル: bootstrap.py プロジェクト: grodniewicz/oship
def bootStrapSubscriber(event):
    """Subscriber to the IDatabaseOpenedWithRootEvent

    Create utility at that time if not yet present
    """

    db, connection, root, root_folder = getInformationFromEvent(event)

    ensureUtility(root_folder, IPrincipalAnnotationUtility,
                  'PrincipalAnnotation', PrincipalAnnotationUtility)

    transaction.commit()
    connection.close()
コード例 #16
0
ファイル: error.py プロジェクト: jean/z3c.formwidget.ckeditor
def errorSubscriber(event):
    """Subscriber to the IDataBaseOpenedEvent

    Create utility at that time if not yet present
    """

    db, connection, root, root_folder = getInformationFromEvent(event)

    ensureUtility(root_folder, IErrorReportingUtility, '',
                  RootErrorReportingUtility, copy_to_zlog=True,
                  _ignored_exceptions=('Unauthorized',))

    transaction.commit()
    connection.close()
コード例 #17
0
ファイル: runner.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriber(event):
    """ log the startup to our supervisor
    """
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)
    sitem = root_folder.getSiteManager()
    utils = [ util for util in sitem.registeredUtilities()
              if util.provided.isOrExtends(IAdmUtilSupervisor)]
    instAdmUtilSupervisor = utils[0].component
    instAdmUtilSupervisor.appendEventHistory(\
        u"'cron runner' started (Vers. %s) (%d bytes) (%d objects)" \
        % (getIkVersion(), dummy_db.getSize(), dummy_db.objectCount()))
    transaction.get().commit()
    connection.close()
コード例 #18
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriberDatabase(event):
    """initialisation of ict_ok supervisor on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)

    madeAdmUtilCategories = ensureUtility(root_folder,
                                          IAdmUtilCategories,
                                          'AdmUtilCategories',
                                          AdmUtilCategories,
                                          '',
                                          copy_to_zlog=False,
                                          asObject=True)

    if isinstance(madeAdmUtilCategories, AdmUtilCategories):
        logger.info(u"bootstrap: Ensure named AdmUtilCategories")
        dcore = IWriteZopeDublinCore(madeAdmUtilCategories)
        dcore.title = u"Categories Utility"
        dcore.created = datetime.utcnow()
        madeAdmUtilCategories.ikName = dcore.title
        for strHostGroup in [
                u'DNS-Server',
                u'File-Server',
                u'Miscellaneous-Server',
                u'SMTP-Server',
                u'Terminal-Server',
                u'Utility-Server',
                u'Workstation',
        ]:
            newHostGroup = AdmUtilCatHostGroup()
            newHostGroup.__setattr__("ikName", strHostGroup)
            dcore = IWriteZopeDublinCore(newHostGroup)
            dcore.created = datetime.utcnow()
            dcore.title = strHostGroup
            madeAdmUtilCategories[newHostGroup.objectID] = newHostGroup
        madeAdmUtilCategories.__post_init__()
        sitem = root_folder.getSiteManager()
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: made IAdmUtilCategories-Utility")

    transaction.get().commit()
    connection.close()
コード例 #19
0
ファイル: tests.py プロジェクト: wpjunior/proled
    def test_ensureUtilityForSubSite(self):
        self.createRFAndSM()

        db, connection, root, root_folder = getInformationFromEvent(
            EventStub(self.db))

        sub_folder = root_folder['sub_folder']
        ensureUtility(sub_folder, IErrorReportingUtility,
                     'ErrorReporting', ErrorReportingUtility,
                     'ErrorReporting')
    
        # Make sure it was created on the sub folder, not the root folder
        got_utility = zapi.getUtility(IErrorReportingUtility, name='ErrorReporting',
                context=sub_folder)
        got_path = zapi.getPath(got_utility)
        self.assertEquals("/sub_folder/++etc++site/default/ErrorReporting", got_path)
コード例 #20
0
ファイル: supervisor.py プロジェクト: misaelnieto/spionisto
def launch_pipelines(event):

    db, connection, root, root_folder = getInformationFromEvent(event)

    s_api = xmlrpclib.ServerProxy(SUPERVISORD_URI)

    #Get the path to the scritps
    scripts_dir = join(dirname(abspath(__file__)), 'scripts')
    cam_script = join(scripts_dir, 'ip-camera.py')
    proxy_script = join(scripts_dir, 'gst-proxy.py')
    config_dir = tempfile.mkdtemp(prefix='spionisto')

    for app in root_folder.values():
        for camera in app.values():
            if ICamera.providedBy(camera):
                #Get pipeline and ports
                pipeline = ICameraGstreamerPipeline(camera).pipeline()
                port_http = MJPEG_PORT_BASE + camera.id
                port_tcp = TCP_PORT_BASE + camera.id

                #Create configuration file
                config_filename = os.path.join(config_dir, '%i.ini' % camera.id)
                config_file = ConfigParser.SafeConfigParser()
                config_file.add_section('spionisto')
                config_file.set('spionisto', 'port-http', str(port_http))
                config_file.set('spionisto', 'port-tcp', str(port_tcp))
                config_file.set('spionisto', 'pipeline', pipeline.encode('ascii', 'ignore'))
                with open(config_filename, 'wb') as fp:
                    config_file.write(fp)

                #Use supervisor's twiddler API to launch the proxy and the ipcamera
                s_api.twiddler.addProgramToGroup(
                    'dynamic',
                    'cam_script_%i' % camera.id,
                    {'command':'%s %s'%(cam_script, config_filename),
                     'autostart':'true',
                     'autorestart':'false', 'startsecs':'0'}
                )
                print 'command : %s %s'%(cam_script, config_filename)
                s_api.twiddler.addProgramToGroup(
                    'dynamic',
                    'proxy_script_%i' % camera.id,
                    {'command':'%s %s'%(proxy_script, config_filename),
                     'autostart':'true',
                     'autorestart':'false', 'startsecs':'2'}
                )
                print 'command : %s %s'%(proxy_script, config_filename)
コード例 #21
0
def bootStrapSubscriberDatabase_step2(event):
    """initialisation of jabber-generator utility on first database startup
    """
    print "bootStrapSubscriberDatabase_step2"
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)
    # search in global component registry
    sitem = root_folder.getSiteManager()
    utils = [ util for util in sitem.registeredUtilities()
              if util.provided.isOrExtends(INotifierJabber)]
    instIkNotifierJabber = utils[0].component
    if instIkNotifierJabber.enableConnector:
        instIkNotifierJabber.connect_server()
    print "enableConnector: %s" % instIkNotifierJabber.enableConnector
    print "ipv4Connector: %s" % instIkNotifierJabber.ipv4Connector
    print "portConnector: %s" % instIkNotifierJabber.portConnector
    print "lastSeenConnector: %s" % instIkNotifierJabber.lastSeenConnector
コード例 #22
0
def bootStrapSubscriber(event):
    """Subscriber to the IDataBaseOpenedEvent

    Create utility at that time if not yet present
    """
    db, connection, root, root_folder = getInformationFromEvent(event)

    ensureUtility(
        root_folder,
        IClientIdManager, 'CookieClientIdManager',
        CookieClientIdManager)
    ensureUtility(
        root_folder,
        ISessionDataContainer, 'PersistentSessionDataContainer',
        PersistentSessionDataContainer)

    transaction.commit()
    connection.close()
コード例 #23
0
def bootStrapSubscriberDatabase(event):
    """initialisation of ict_ok supervisor on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    SnmpdThread.database = event.database
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)

    madeAdmUtilSnmpd = ensureUtility(root_folder, IAdmUtilSnmpd,
                                       'AdmUtilSnmpd', AdmUtilSnmpd, '',
                                       copy_to_zlog=False, asObject=True)

    if isinstance(madeAdmUtilSnmpd, AdmUtilSnmpd):
        logger.info(u"bootstrap: Ensure named AdmUtilSnmpd")
        dcore = IWriteZopeDublinCore(madeAdmUtilSnmpd)
        dcore.title = u"Snmpd Utility"
        dcore.created = datetime.utcnow()
        madeAdmUtilSnmpd.ikName = dcore.title
        madeAdmUtilSnmpd.__post_init__()
        sitem = root_folder.getSiteManager()
        utils = [ util for util in sitem.registeredUtilities()
                    if util.provided.isOrExtends(IAdmUtilSupervisor)]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: made IAdmUtilSnmpd-Utility")
        dbgOut = getNewMrtgData(madeAdmUtilSnmpd)
        if dbgOut:
            instAdmUtilSupervisor.appendEventHistory(dbgOut)
    else:
        # search in global component registry
        sitem = root_folder.getSiteManager()
        utils = [ util for util in sitem.registeredUtilities()
                  if util.provided.isOrExtends(IAdmUtilSnmpd)]
        instAdmUtilSnmpd = utils[0].component
        utils = [ util for util in sitem.registeredUtilities()
                  if util.provided.isOrExtends(IAdmUtilSupervisor)]
        instAdmUtilSupervisor = utils[0].component
        dbgOut = updateMrtgData(instAdmUtilSnmpd)
        if dbgOut:
            instAdmUtilSupervisor.appendEventHistory(dbgOut)

    transaction.get().commit()
    connection.close()
コード例 #24
0
def bootstrapSubscriber(ev):
    db, connection, root, portal = getInformationFromEvent(ev)
    if portal is None:
        connection.close()
        return

    def findObjectsProviding(root):
        if ISite.providedBy(root):
            yield root

        try:
            if len(getParents(root)) > 3:
                raise StopIteration()
        except TypeError:
            raise StopIteration()

        values = getattr(root, "values", None)
        if callable(values):
            for subobj in values():
                for match in findObjectsProviding(subobj):
                    yield match

    try:
        for portal in findObjectsProviding(portal):
            setSite(portal)
            try:
                try:
                    catalog = getCatalog()
                except LookupError:
                    continue
                try:
                    if len(list(catalog)) != len(list(catalog.getIndexes())):
                        logger.info("Updating Discussion Catalog Indexes... (for %s)" % portal.title)
                        catalog.clear()
                        catalog.updateIndexes()
                        logger.info("Done!")
                except ComponentLookupError:
                    continue
            finally:
                setSite(None)
    finally:
        transaction.commit()
        connection.close()
コード例 #25
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriber(event):
    """initialisation of IntId utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)
    # search in global component registry
    sitem = root_folder.getSiteManager()
    # search for ICatalog
    utils = [
        util for util in sitem.registeredUtilities()
        if util.provided.isOrExtends(ICatalog)
    ]
    instUtilityICatalog = utils[0].component
    if not "script_oid_index" in instUtilityICatalog.keys():
        script_oid_index = KeywordIndex(interface=ISearchableText,
                                        field_name='getSearchableScriptOid',
                                        field_callable=True)
        instUtilityICatalog['script_oid_index'] = script_oid_index
        # search for IAdmUtilSupervisor
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: ICatalog - create index for entry type 'script'")

    folderName = u"MobilePhones"
    if folderName not in root_folder.keys():
        #newFolder = TestComponentFolder()
        newFolder = createObject(
            u'org.ict_ok.components.mobilephone.mobilephone.MobilePhoneFolder')
        root_folder[folderName] = newFolder
        dcore = IZopeDublinCore(newFolder, None)
        #dcore.creators = [u'ikportscan']
        #newFolder.ikComment += u"scanner: %s" % (dateNow)
        newFolder.__setattr__("ikName", folderName)
        dcore.title = folderName

    transaction.get().commit()
    connection.close()
コード例 #26
0
    def test_bootstrapSusbcriber(self):
        self.createRFAndSM()

        event = DatabaseOpened(self.db)
        # this will open and close the database by itself
        sessionBootstrapSubscriber(event)

        db, connection, root, root_folder = getInformationFromEvent(event)

        got_utility = zope.component.getUtility(IClientIdManager,
                                                context=root_folder)
        self.assertTrue(IClientIdManager.providedBy(got_utility))

        got_utility = zope.component.getUtility(ISessionDataContainer,
                                                context=root_folder)
        self.assertTrue(ISessionDataContainer.providedBy(got_utility))

        # we need to close again in the end
        connection.close()
コード例 #27
0
    def test_errorReportingSetup(self):
        """Error reporting is set up by an event handler in this package.

        We test whether the event handler works.
        """
        self.createRFAndSM()

        event = DatabaseOpened(self.db)
        # this will open and close the database by itself
        errorlogBootStrapSubscriber(event)

        # this will re-open the database
        db, connection, root, root_folder = getInformationFromEvent(event)

        got_utility = zope.component.getUtility(IErrorReportingUtility,
                                                context=root_folder)
        self.assertTrue(IErrorReportingUtility.providedBy(got_utility))
        # we need to close again in the end
        connection.close()
コード例 #28
0
def bootstrapSubscriber(ev):
    db, connection, root, portal = getInformationFromEvent(ev)
    if portal is None:
        connection.close()
        return

    def findObjectsProviding(root):
        if ISite.providedBy(root):
            yield root

        try:
            if len(getParents(root)) > 3:
                raise StopIteration()
        except TypeError:
            raise StopIteration()

        values = getattr(root, 'values', None)
        if callable(values):
            for subobj in values():
                for match in findObjectsProviding(subobj):
                    yield match
    try:
        for portal in findObjectsProviding(portal):
            setSite(portal)
            try:
                try:
                    catalog = getCatalog()
                except LookupError:
                    continue
                try:
                    if len(list(catalog)) != len(list(catalog.getIndexes())):
                        logger.info('Updating Acknowledgements Catalog Indexes... (for %s)' % portal.title)
                        catalog.clear()
                        catalog.updateIndexes()
                        logger.info('Done!')
                except ComponentLookupError:
                    continue
            finally:
                setSite(None)
    finally:
        transaction.commit()
        connection.close()
コード例 #29
0
ファイル: bootstrap.py プロジェクト: Zojax/zojax.catalog
def bootstrapSubscriber(ev):
    db, connection, root, portal = getInformationFromEvent(ev)
    if portal is None:
        connection.close()
        return
    def findObjectsProviding(root):
        if ISite.providedBy(root):
            yield root
        
        try:
            if len(getParents(root)) > 3:
                raise StopIteration()
        except TypeError:
            raise StopIteration()

        values = getattr(root, 'values', None)
        if callable(values):
            for subobj in values():
                for match in findObjectsProviding(subobj):
                    yield match
    try:
        for portal in findObjectsProviding(portal):
            setSite(portal)
            try:
                try:
                    catalog = component.getUtility(IConfiglet, 'system.catalog').catalog
                except LookupError:
                    continue
                try:
                    if len(list(catalog)) != len(list(catalog.getIndexes())):
                        logger.info('Updating Catalog Indexes...')
                        catalog.clear()
                        catalog.updateIndexes()
                        logger.info('Done!')
                except ComponentLookupError:
                    continue
            finally:
                setSite(None)
    finally:
        transaction.commit()
        connection.close()
コード例 #30
0
def bootStrapSubscriber(event):
    """ Subscriber to the IDatabaseOpenedWithRoot event. Create a global
    intid utility if there is not yet one.

    The intid utility is needed for indexing entries."""

    db, connection, root, root_folder = getInformationFromEvent(event)

    ensureUtility(
        root_folder,
        IIntIds,
        '',
        IntIds,
    )

    #ut = zope.component.queryUtility(
    #    IIntIds, default = None)
    #assert(ut is not None)

    transaction.commit()
    connection.close()
コード例 #31
0
def bootStrapSubscriber(event):
    """initialisation of IntId utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)

    # search in global component registry
    sitem = root_folder.getSiteManager()
    # search for ICatalog
    utils = [ util for util in sitem.registeredUtilities()
              if util.provided.isOrExtends(ICatalog)]
    instUtilityICatalog = utils[0].component
    if not "all_comments_index" in instUtilityICatalog.keys():
        all_comments_index = TextIndex(interface=ISearchableText,
                                        field_name='getSearchableComments',
                                        field_callable=True)
        instUtilityICatalog['all_comments_index'] = all_comments_index
        # search for IAdmUtilSupervisor
        utils = [ util for util in sitem.registeredUtilities()
                  if util.provided.isOrExtends(IAdmUtilSupervisor)]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: ICatalog - create index for all comments")
    if not "all_notes_index" in instUtilityICatalog.keys():
        all_notes_index = TextIndex(interface=ISearchableText,
                                        field_name='getSearchableNotes',
                                        field_callable=True)
        instUtilityICatalog['all_notes_index'] = all_notes_index
        # search for IAdmUtilSupervisor
        utils = [ util for util in sitem.registeredUtilities()
                  if util.provided.isOrExtends(IAdmUtilSupervisor)]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: ICatalog - create index for all notes")


    transaction.get().commit()
    connection.close()
コード例 #32
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriberDatabase(event):
    """initialisation of usermanagement utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)

    madePluggableAuthentication = ensureUtility(\
        root_folder,
        IAdmUtilUserManagement,
        'AdmUtilUserManagement',
        AdmUtilUserManagement,
        copy_to_zlog=False,
        asObject=True)

    if isinstance(madePluggableAuthentication, PluggableAuthentication):
        logger.info(u"bootstrap: Ensure named AdmUtilUserManagement")
        dcore = IWriteZopeDublinCore(madePluggableAuthentication)
        dcore.title = u"User Authentication"
        dcore.created = datetime.utcnow()
        madePluggableAuthentication.ikName = dcore.title
        # madePluggableAuthentication.__post_init__()
        sitem = root_folder.getSiteManager()
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: made AdmUtilUserManagement-Utility")
        groups = GroupFolder(u'group.')
        madePluggableAuthentication[u'groups'] = groups
        principals = PrincipalFolder(u'principal.')
        madePluggableAuthentication[u'principals'] = principals
        madePluggableAuthentication.credentialsPlugins = \
                                   (u'Session Credentials',
                                    u'No Challenge if Authenticated',)
        p_user = InternalPrincipal(u'User',
                                   u'User',
                                   u'Initial User',
                                   passwordManagerName="SHA1")
        p_manager = InternalPrincipal(u'Manager',
                                      u'Manager',
                                      u'Initial Manager',
                                      passwordManagerName="SHA1")
        p_admin = InternalPrincipal(u'Administrator',
                                    u'Administrator',
                                    u'Initial Administrator',
                                    passwordManagerName="SHA1")
        p_developer = InternalPrincipal(u'Developer',
                                        u'Developer',
                                        u'Initial Developer',
                                        passwordManagerName="SHA1")
        principals[u'User'] = p_user
        principals[u'Manager'] = p_manager
        principals[u'Administrator'] = p_admin
        principals[u'Developer'] = p_developer
        grp_usr = GroupInformation(
            u'User', u'view & analyse data, generate reports '
            u'& leave notes at any object')
        grp_mgr = GroupInformation(
            u'Manager', u'search, connect, configure '
            u'& delete devices')
        grp_adm = GroupInformation(
            u'Administrator', u'install, configure '
            u'& administrate System')
        grp_dvl = GroupInformation(
            u'Developer', u'individual adaption '
            u'& development on System')
        grp_usr.principals = [u'principal.User']
        grp_mgr.principals = [u'principal.Manager']
        grp_adm.principals = [u'principal.Administrator']
        grp_dvl.principals = [u'principal.Developer']
        groups[u'User'] = grp_usr
        groups[u'Manager'] = grp_mgr
        groups[u'Administrator'] = grp_adm
        groups[u'Developer'] = grp_dvl
        madePluggableAuthentication.authenticatorPlugins = (u'groups',
                                                            u'principals')
        prm = IPrincipalRoleManager(root_folder)
        prm.assignRoleToPrincipal(u'org.ict_ok.usr', u'group.User')
        prm.assignRoleToPrincipal(u'org.ict_ok.mgr', u'group.Manager')
        prm.assignRoleToPrincipal(u'org.ict_ok.adm', u'group.Administrator')
        prm.assignRoleToPrincipal(u'org.ict_ok.dvl', u'group.Developer')
    transaction.get().commit()
    connection.close()
コード例 #33
0
def init_all_applications(event):
    db, connection, root, root_folder = getInformationFromEvent(event)
    for (app_name, app) in root_folder.items():
        setSite(app)
コード例 #34
0
ファイル: __init__.py プロジェクト: bendavis78/zope
def adminSetup(event):
    from zope.app.appsetup.bootstrap import getInformationFromEvent
    
    db, connection, root, root_folder = getInformationFromEvent(event)
    setupSessionAuthentication(root_folder = root_folder)
コード例 #35
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriberDatabase(event):
    """initialisation of ict_ok supervisor on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)
    madeAdmUtilSupervisor = ensureUtility(root_folder,
                                          IAdmUtilSupervisor,
                                          'AdmUtilSupervisor',
                                          AdmUtilSupervisor,
                                          '',
                                          copy_to_zlog=False,
                                          asObject=True)

    if isinstance(madeAdmUtilSupervisor, AdmUtilSupervisor):
        logger.info(u"bootstrap: Ensure named AdmUtilSupervisor")

        instAdmUtilSupervisor = madeAdmUtilSupervisor
        # attribute is defined readonly, so first toggle this
        IAdmUtilSupervisor['nbrStarts'].readonly = False
        instAdmUtilSupervisor.nbrStarts += 1
        IAdmUtilSupervisor['nbrStarts'].readonly = True
        instAdmUtilSupervisor.appendEventHistory(u"Database started (Vers. %s)" \
                                                 % getIkVersion())
        dcore = IWriteZopeDublinCore(madeAdmUtilSupervisor)
        dcore.title = u"ICT_Ok Supervisor"
        dcore.created = datetime.utcnow()
        madeAdmUtilSupervisor.ikName = dcore.title
        madeAdmUtilSupervisor.__post_init__()
    else:
        # search in global component registry
        sitem = root_folder.getSiteManager()
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        # attribute is defined readonly, so first toggle this
        IAdmUtilSupervisor['nbrStarts'].readonly = False
        instAdmUtilSupervisor.nbrStarts += 1
        IAdmUtilSupervisor['nbrStarts'].readonly = True
        instAdmUtilSupervisor.appendEventHistory(\
            u"Database started (Vers. %s) (%d bytes) (%d objects)" \
            % (getIkVersion(), dummy_db.getSize(), dummy_db.objectCount()))
        dcore = IWriteZopeDublinCore(instAdmUtilSupervisor)
        dcore.title = u"ICT_Ok Supervisor"
        dcore.modified = datetime.utcnow()

    madeUtilityIIntIds = ensureUtility(root_folder,
                                       IIntIds,
                                       '',
                                       IntIds,
                                       '',
                                       copy_to_zlog=False,
                                       asObject=True)

    if isinstance(madeUtilityIIntIds, IntIds):
        logger.info(u"bootstrap: made IIntIds-Utility")
        dcore = IWriteZopeDublinCore(madeUtilityIIntIds)
        dcore.title = u"ICT_Ok Object Id Manager"
        dcore.created = datetime.utcnow()
        sitem = root_folder.getSiteManager()
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: made IIntIds-Utility")

    madeUtilityICatalog = ensureUtility(root_folder,
                                        ICatalog,
                                        '',
                                        Catalog,
                                        '',
                                        copy_to_zlog=False,
                                        asObject=True)

    if isinstance(madeUtilityICatalog, Catalog):
        logger.info(u"bootstrap: made ICatalog-Utility")
        dcore = IWriteZopeDublinCore(madeUtilityICatalog)
        dcore.title = u"ICT_Ok Search Manager"
        dcore.created = datetime.utcnow()
        oid_index = TextIndex(interface=ISearchableText,
                              field_name='getSearchableOid',
                              field_callable=True)
        madeUtilityICatalog['oid_index'] = oid_index
        sitem = root_folder.getSiteManager()
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: made ICatalog-Utility")

    # search in global component registry
    sitem = root_folder.getSiteManager()
    # search for ICatalog
    utils = [
        util for util in sitem.registeredUtilities()
        if util.provided.isOrExtends(ICatalog)
    ]
    instUtilityICatalog = utils[0].component
    if not "all_comments_index" in instUtilityICatalog.keys():
        all_comments_index = TextIndex(interface=ISearchableText,
                                       field_name='getSearchableComments',
                                       field_callable=True)
        instUtilityICatalog['all_comments_index'] = all_comments_index
        # search for IAdmUtilSupervisor
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: ICatalog - create index for all comments")
    if not "all_notes_index" in instUtilityICatalog.keys():
        all_notes_index = TextIndex(interface=ISearchableText,
                                    field_name='getSearchableNotes',
                                    field_callable=True)
        instUtilityICatalog['all_notes_index'] = all_notes_index
        # search for IAdmUtilSupervisor
        utils = [
            util for util in sitem.registeredUtilities()
            if util.provided.isOrExtends(IAdmUtilSupervisor)
        ]
        instAdmUtilSupervisor = utils[0].component
        instAdmUtilSupervisor.appendEventHistory(\
            u" bootstrap: ICatalog - create index for all notes")

    transaction.get().commit()
    connection.close()
コード例 #36
0
ファイル: bootstrap.py プロジェクト: mleist/ict-ok.org
def bootStrapSubscriber(event):
    """initialisation of IntId utility on first database startup
    """
    if appsetup.getConfigContext().hasFeature('devmode'):
        logger.info(u"starting bootStrapSubscriberDatabase (org.ict_ok...)")
    dummy_db, connection, dummy_root, root_folder = \
            getInformationFromEvent(event)

#    madeUtilityIIntIds = ensureUtility(root_folder, 
#                                       IIntIds, 
#                                       '', 
#                                       IntIds, 
#                                       name='IntIds',
#                                       copy_to_zlog=False, 
#                                       asObject=True)
#
#    if isinstance(madeUtilityIIntIds, IntIds):
#        logger.info(u"bootstrap: made IIntIds-Utility")
#        dcore = IWriteZopeDublinCore(madeUtilityIIntIds)
#        dcore.title = u"Object Id Manager"
#        dcore.created = datetime.now(berlinTZ)
#        sitem = root_folder.getSiteManager()
#        utils = [ util for util in sitem.registeredUtilities()
#                    if util.provided.isOrExtends(IAdmUtilSupervisor)]
#        instAdmUtilSupervisor = utils[0].component
#        instAdmUtilSupervisor.appendEventHistory(\
#            u" bootstrap: made IIntIds-Utility")
#
#    madeUtilityICatalog = ensureUtility(root_folder, 
#                                        ICatalog, 
#                                        '', 
#                                        Catalog, 
#                                        name='Catalog',
#                                        copy_to_zlog=False, 
#                                        asObject=True)
#
#    if isinstance(madeUtilityICatalog, Catalog):
#        logger.info(u"bootstrap: made ICatalog-Utility")
#        dcore = IWriteZopeDublinCore(madeUtilityICatalog)
#        dcore.title = u"Search Manager"
#        dcore.created = datetime.now(berlinTZ)
#        oid_index = TextIndex(interface=ISearchableText,
#                               field_name='getSearchableOid',
#                               field_callable=True)
#        madeUtilityICatalog['oid_index'] = oid_index
#        sitem = root_folder.getSiteManager()
#        utils = [ util for util in sitem.registeredUtilities()
#                    if util.provided.isOrExtends(IAdmUtilSupervisor)]
#        instAdmUtilSupervisor = utils[0].component
#        instAdmUtilSupervisor.appendEventHistory(\
#            u" bootstrap: made ICatalog-Utility")
#        
#    # search in global component registry
#    sitem = root_folder.getSiteManager()
#    # search for ICatalog
#    utils = [ util for util in sitem.registeredUtilities()
#              if util.provided.isOrExtends(ICatalog)]
#    instUtilityICatalog = utils[0].component
#    if not "all_comments_index" in instUtilityICatalog.keys():
#        all_comments_index = TextIndex(interface=ISearchableText,
#                                        field_name='getSearchableComments',
#                                        field_callable=True)
#        instUtilityICatalog['all_comments_index'] = all_comments_index
#        # search for IAdmUtilSupervisor
#        utils = [ util for util in sitem.registeredUtilities()
#                  if util.provided.isOrExtends(IAdmUtilSupervisor)]
#        instAdmUtilSupervisor = utils[0].component
#        instAdmUtilSupervisor.appendEventHistory(\
#            u" bootstrap: ICatalog - create index for all comments")
#    if not "all_notes_index" in instUtilityICatalog.keys():
#        all_notes_index = TextIndex(interface=ISearchableText,
#                                        field_name='getSearchableNotes',
#                                        field_callable=True)
#        instUtilityICatalog['all_notes_index'] = all_notes_index
#        # search for IAdmUtilSupervisor
#        utils = [ util for util in sitem.registeredUtilities()
#                  if util.provided.isOrExtends(IAdmUtilSupervisor)]
#        instAdmUtilSupervisor = utils[0].component
#        instAdmUtilSupervisor.appendEventHistory(\
#            u" bootstrap: ICatalog - create index for all notes")


    transaction.get().commit()
    connection.close()