Пример #1
0
def populate_DB():
    """ Peuple la base de données en vue des tests. """

    # On crée deux hôtes de test.
    host1 = functions.add_host(u'host1')
    host2 = functions.add_host(u'host2')
    DBSession.flush()

    # On ajoute un service sur chaque hôte.
    service1 = functions.add_lowlevelservice(
                        host2, u'service1')
    service2 = functions.add_lowlevelservice(
                        host1, u'service2')
    DBSession.flush()

    # On ajoute un événement brut sur chaque service.
    event1 = functions.add_event(service1, u'WARNING', u'foo')
    event2 = functions.add_event(service2, u'CRITICAL', u'foo')
    DBSession.flush()

    # On ajoute un événement corrélé pour chaque événement brut.
    functions.add_correvent([event1])
    functions.add_correvent([event2])
    DBSession.flush()
    transaction.commit()
Пример #2
0
def populate_DB():
    """ Peuple la base de données. """
    # On ajoute un groupe d'hôtes et un groupe de services.
    supitemmanagers = functions.add_supitemgroup(u'managersgroup')

    usergroup = UserGroup.by_group_name(u'users_with_access')
    DBSession.add(DataPermission(
        group=supitemmanagers,
        usergroup=usergroup,
        access=u'w',
    ))
    DBSession.flush()

    # On crée un 2 hôtes, et on les ajoute au groupe d'hôtes.
    host1 = functions.add_host(u'host1')
    host2 = functions.add_host(u'host2')
    supitemmanagers.supitems.append(host1)
    supitemmanagers.supitems.append(host2)
    DBSession.flush()

    # On crée 2 services de bas niveau, et on les ajoute au groupe de services.
    service1 = functions.add_lowlevelservice(host1, u'service1')
    service2 = functions.add_lowlevelservice(host2, u'service2')
    supitemmanagers.supitems.append(service1)
    supitemmanagers.supitems.append(service2)
    DBSession.flush()

    return ([host1, host2], [service1, service2])
Пример #3
0
    def test_add_to_agregate(self):
        """Ajout d'un événement brut à un évènement corrélé déjà existant"""
        # On crée 2 couples host/service.
        host1 = functions.add_host(u'messagerie')
        service1 = functions.add_lowlevelservice(host1, u'Processes')
        service2 = functions.add_lowlevelservice(host1, u'CPU')

        # On ajoute 1 couple événement/agrégat à la BDD.
        event2 = functions.add_event(service2, u'WARNING', 'WARNING: CPU is overloaded')
        events_aggregate1 = functions.add_correvent([event2])

        # On ajoute un nouvel événement à la BDD.
        event1 = functions.add_event(service1, u'WARNING', 'WARNING: Processes are not responding')

        # On ajoute ce nouvel événement à l'agrégat existant.
        ctx = helpers.ContextStub(42)
        yield add_to_aggregate(
            event1.idevent,
            events_aggregate1.idcorrevent,
            DummyDatabaseWrapper(True),
            ctx,
            123,
            False
        )
        DBSession.flush()

        # On vérifie que l'événement a bien été ajouté à l'agrégat.
        DBSession.refresh(events_aggregate1)
        expected = sorted([event1.idevent, event2.idevent])
        actual = sorted([event.idevent for event in events_aggregate1.events])
        print "actual = %r, expected = %r" % (actual, expected)
        self.assertEquals(actual, expected)
Пример #4
0
def populate_DB():
    """ Peuple la base de données en vue des tests. """

    # On crée quatre hôtes de test.
    host1 = functions.add_host(u"host1")
    host2 = functions.add_host(u"host2")
    host3 = functions.add_host(u"host3")
    host4 = functions.add_host(u"host4")
    DBSession.flush()

    # On ajoute un service sur chaque hôte.
    service1 = functions.add_lowlevelservice(host2, u"service1")
    service2 = functions.add_lowlevelservice(host1, u"service2")
    service3 = functions.add_lowlevelservice(host3, u"service3")
    functions.add_lowlevelservice(host4, u"service4")
    DBSession.flush()

    # On crée un groupe de supitems et on y ajoute 'host1' et 'host4' en vue des
    # tests portant sur les permissions
    group1 = functions.add_supitemgroup(u"group1")
    DBSession.add(group1)
    functions.add_host2group(u"host1", u"group1")
    functions.add_host2group(u"host4", u"group1")
    DBSession.flush()

    # On ajoute 2 utilisateurs.
    functions.add_user(u"no_rights", u"*****@*****.**", u"no_rights", u"no_rights", u"no_rights")
    functions.add_user(u"limited_rights", u"*****@*****.**", u"limited_rights", u"limited_rights", u"limited_rights")
    functions.add_usergroup_permission(u"limited_rights", u"vigiboard-silence")
    functions.add_supitemgrouppermission(u"group1", u"limited_rights")
    DBSession.flush()

    # On ajoute 4 règles de mise en silence.
    functions.add_silence(
        states=[u"UNKNOWN"], host=host1, service=None, user=u"manager", comment=u"foo", date=u"2000-01-01 00:00:00"
    )
    functions.add_silence(
        states=[u"DOWN"],
        host=host1,
        service=service2,
        user=u"unrestricted",
        comment=u"bar",
        date=u"2000-01-02 00:00:00",
    )
    functions.add_silence(
        states=[u"WARNING", "CRITICAL"],
        host=host2,
        service=service1,
        user=u"unrestricted",
        comment=u"baz",
        date=u"2000-01-03 00:00:00",
    )
    functions.add_silence(
        states=[u"DOWN"], host=host3, service=None, user=u"manager", comment=u"qux", date=u"2000-01-04 00:00:00"
    )
    DBSession.flush()

    transaction.commit()
Пример #5
0
    def setUp(self):
        """Initialisation avant chaque test."""
        super(TestDetailsPluginMapsHostLimited, self).setUp()
        # On fait manuellement ce que l'initialisation de VigiMap ferait
        # (car on est dans les tests de VigiBoard, pas ceux de VigiMap).
        root = functions.add_mapgroup(u'Root')
        DBSession.add(Permission(permission_name=u'vigimap-access'))

        print "Creation hote, service et cartes"
        host = functions.add_host(u'localhost éçà')
        functions.add_lowlevelservice(host, u'lls éçà')
        sig = functions.add_supitemgroup(u'supitemgroup éçà')
        functions.add_host2group(host, sig)
        mg = functions.add_mapgroup(u'éçà', root)
        m1 = functions.add_map(u'M1', root)
        # La seconde carte appartient à "/Root/éçà"
        # et permet de tester les accès indirects.
        m2 = functions.add_map(u'M2', mg)
        m3 = functions.add_map(u'M3', root)

        # On ajoute l'hôte 2 fois sur M1 pour vérifier
        # l'absense de doublons dans les liens.
        print "Preparation cartes"
        functions.add_node_host(host, 'h1', m1)
        functions.add_node_host(host, 'h2', m1)
        functions.add_node_host(host, 'h', m2)
        functions.add_node_host(host, 'h', m3)

        # Création de quelques utilisateurs.
        print "Creation des comptes utilisateurs et reglages permissions"
        functions.add_user(u'restricted', u'*****@*****.**',
                           u'restricted', u'restricted',
                           u'restricted')
        functions.add_user(u'unrestricted', u'*****@*****.**',
                           u'unrestricted', u'unrestricted',
                           u'unrestricted')
        functions.add_user(u'no_rights', u'*****@*****.**',
                           u'no_rights', u'no_rights',
                           u'no_rights')
        # Les 3 utilisateurs ont accès à VigiBoard.
        functions.add_usergroup_permission(u'no_rights', u'vigiboard-access')
        functions.add_usergroup_permission(u'restricted', u'vigiboard-access')
        functions.add_usergroup_permission(u'unrestricted', u'vigiboard-access')
        # Mais seuls "restricted" et "unrestricted" ont accès à VigiMap.
        functions.add_usergroup_permission(u'restricted', u'vigimap-access')
        functions.add_usergroup_permission(u'unrestricted', u'vigimap-access')
        # Ils voient tous les trois les événements dans VigiBoard...
        functions.add_supitemgrouppermission(sig, 'no_rights')
        functions.add_supitemgrouppermission(sig, 'restricted')
        functions.add_supitemgrouppermission(sig, 'unrestricted')
        # ... mais "restricted" ne peut voir que "M2" ...
        functions.add_MapGroupPermission(mg, 'restricted')
        # ... tandis que "unrestricted" voit les 3 cartes (par héritage).
        functions.add_MapGroupPermission(root, 'unrestricted')

        DBSession.flush()
        transaction.commit()
Пример #6
0
    def add_services(self):
        """Création de 5 couples host/service"""
        self.host1 = functions.add_host(u'messagerie')
        self.host2 = functions.add_host(u'firewall')

        self.service1 = functions.add_lowlevelservice(self.host1, u'Processes')
        self.service2 = functions.add_lowlevelservice(self.host1, u'CPU')
        self.service3 = functions.add_lowlevelservice(self.host1, u'RAM')
        self.service4 = functions.add_lowlevelservice(self.host1, u'Interface eth0')
        self.service5 = functions.add_lowlevelservice(self.host2, u'Interface eth1')
Пример #7
0
    def setUp(self):
        setup_db()
        two_days_ago = datetime.fromtimestamp(time.time() - 2 * 86400)

        localhost = fn.add_host('localhost')
        uptime = fn.add_lowlevelservice(localhost, 'UpTime')
        ping = fn.add_lowlevelservice(localhost, 'Ping')
        users = fn.add_lowlevelservice(localhost, 'Users')

        localhost2 = fn.add_host('localhost2')
        uptime2 = fn.add_lowlevelservice(localhost2, 'UpTime2')

        localhost3 = fn.add_host('localhost3')
        localhost4 = fn.add_host('localhost4')

        # localhost UP : l'événement pourra être fermé (option -u).
        fn.add_correvent([fn.add_event(localhost, 'UP', 'foo')])

        # UpTime OK : l'événement pourra être fermé (option -k).
        fn.add_correvent([fn.add_event(uptime, 'OK', 'foo')])

        # Le Ping et les Users sont CRITICAL depuis une durée variable :
        # les événements ne pourront pas être fermés.
        fn.add_correvent([fn.add_event(ping, 'CRITICAL', 'foo')])
        fn.add_correvent(
            [fn.add_event(users, 'CRITICAL', 'foo')],
            timestamp=two_days_ago
        )

        # localhost2 UP et événement ouvert depuis 2j.
        fn.add_correvent(
            [fn.add_event(localhost2, 'UP', 'foo')],
            timestamp=two_days_ago
        )

        # UpTime2 OK et événement ouvert depuis 2j.
        fn.add_correvent(
            [fn.add_event(uptime2, 'OK', 'foo')],
            timestamp=two_days_ago
        )

        # localhost3 et 4 sont DOWN depuis une durée variable
        # et ne doivent pas être fermés.
        fn.add_correvent([fn.add_event(localhost3, 'DOWN', 'foo')])
        fn.add_correvent(
            [fn.add_event(localhost4, 'DOWN', 'foo')],
            timestamp=two_days_ago
        )
Пример #8
0
 def do_get_dependencies(self):
     """Generate some data for the test"""
     ModelTest.do_get_dependencies(self)
     host = functions.add_host(u"myhost")
     service = functions.add_lowlevelservice(host, u"myservice")
     event = functions.add_event(service, u"OK", u"Foo")
     return dict(idcause=event.idevent)
Пример #9
0
    def runTest(self):
        """
        Test de la récupération dans la BDD de l'identifiant d'un
        item (hôte, service de haut niveau, ou service de bas niveau).
        """
        setup_db()
        DBSession.flush()

        host1 = functions.add_host(u'messagerie')
        lls1 = functions.add_lowlevelservice(host1, u'Processes')
        hls1 = functions.add_highlevelservice(u'Connexion')

        # On vérifie que la fonction get_supitem renvoie bien l'identifiant
        # du host1 lorsqu'on lui passe son nom en paramètre.
        self.assertEqual(host1.idhost, SupItem.get_supitem(host1.name, None))

        # On vérifie que la fonction get_supitem renvoie bien l'identifiant
        # du hls1 lorsqu'on lui passe son nom en paramètre.
        self.assertEqual(hls1.idservice,
                         SupItem.get_supitem(None, hls1.servicename))

        # On vérifie que la fonction get_supitem renvoie bien l'identifiant
        # du lls1 lorsqu'on lui passe son nom en paramètre.
        self.assertEqual(lls1.idservice,
                         SupItem.get_supitem(host1.name, lls1.servicename))

        #Nettoyage de la BDD à la fin du test
        del host1
        del lls1
        del hls1
        DBSession.rollback()
        DBSession.expunge_all()
        teardown_db()
Пример #10
0
def populate_DB():
    """ Peuple la base de données. """
    # On ajoute un groupe d'hôtes et un groupe de services.
    supitemmanagers = SupItemGroup(name=u'managersgroup', parent=None)
    DBSession.add(supitemmanagers)
    DBSession.flush()

    usergroup = UserGroup.by_group_name(u'users_with_access')
    DBSession.add(DataPermission(
        group=supitemmanagers,
        usergroup=usergroup,
        access=u'r',
    ))
    DBSession.flush()

    # On crée un hôte de test, et on l'ajoute au groupe d'hôtes.
    managerhost = functions.add_host(u'managerhost')
    supitemmanagers.supitems.append(managerhost)
    DBSession.flush()

    # On crée un services de bas niveau, et on l'ajoute au groupe de services.
    managerservice = functions.add_lowlevelservice(
        managerhost, u'managerservice')
    supitemmanagers.supitems.append(managerservice)
    DBSession.flush()

    return (managerhost, managerservice)
Пример #11
0
 def do_get_dependencies(self):
     """Generate some data for the test"""
     ModelTest.do_get_dependencies(self)
     host = functions.add_host(u'myhost')
     service = functions.add_lowlevelservice(host, u'myservice')
     event = functions.add_event(service, u'OK', u'Foo')
     return dict(idevent=event.idevent)
Пример #12
0
 def do_get_dependencies(self):
     """Génère les dépendances de cette instance."""
     # Insère les noms d'états dans la base de données.
     ModelTest.do_get_dependencies(self)
     host = functions.add_host(u'myhost')
     service = functions.add_lowlevelservice(host, u'myservice')
     return dict(idsupitem=service.idservice)
Пример #13
0
 def test_host_up_many_services(self):
     """Demander les états de tous les services d'un hôte qui passe UP"""
     yield self.setup_context("DOWN", "UP")
     servicenames = [ u'testservice-%d' % i for i in range(10) ]
     for servicename in servicenames:
         functions.add_lowlevelservice(self.host, servicename)
     rule_dispatcher = Mock()
     yield self.rule.process(rule_dispatcher, self.message_id)
     servicenames.insert(0, "testservice") # crée en setUp
     print "Count:", rule_dispatcher.sendItem.call_count
     self.assertEqual(rule_dispatcher.sendItem.call_count, len(servicenames))
     for i, servicename in enumerate(servicenames):
         call = rule_dispatcher.method_calls[i]
         print servicename, call
         self.assertEqual(call[0], "sendItem")
         self.assertEqual(call[1][0]["value"].count(servicename), 1)
Пример #14
0
    def test_pagination(self):
        """ Pagination du tri """

        # On crée autant d'événements qu'on peut en afficher par page + 1,
        # afin d'avoir 2 pages dans le bac à événements.
        host3 = functions.add_host(u'host3')
        service3 = functions.add_lowlevelservice(
                            host3, u'service3')
        DBSession.flush()
        items_per_page = int(config['vigiboard_items_per_page'])
        for i in xrange(items_per_page - 1):
            event = functions.add_event(service3, u'WARNING', u'foo')
            functions.add_correvent([event])
            DBSession.flush()
        transaction.commit()

        # On affiche la seconde page de VigiBoard avec
        # un tri par ordre décroissant sur le nom d'hôte
        environ = {'REMOTE_USER': '******'}
        response = self.app.get(
            '/?page=2&sort=hostname&order=desc', extra_environ=environ)

        # Il ne doit y avoir qu'une seule ligne de
        # résultats concernant "service2" sur "host1"
        hostnames = response.lxml.xpath(
            '//table[@class="vigitable"]/tbody/tr/' \
            'td[@class="plugin_hostname"]/text()')
        assert_equal(hostnames, ['host1'])
        servicenames = response.lxml.xpath(
            '//table[@class="vigitable"]/tbody/tr/' \
            'td[@class="plugin_servicename"]/text()')
        assert_equal(servicenames, ['service2'])
Пример #15
0
 def create_deps(self):
     # Les caractères "_" & "%" sont spéciaux en SQL.
     # Leur usage permet de détecter les échappements abusifs (#943).
     self.host = functions.add_host(u'a.b.c_d%e')
     self.service = functions.add_lowlevelservice(self.host, u'foobarbaz')
     # L'hôte appartient au groupe "Child".
     parent = functions.add_supitemgroup(u'Parent')
     child = functions.add_supitemgroup(u'Child', parent)
     functions.add_host2group(self.host, child)
     # Positionnement des permissions.
     functions.add_supitemgrouppermission(parent, u'indirect')
     functions.add_supitemgrouppermission(child, u'direct')
Пример #16
0
    def test_collector_relation(self):
        """Bon fonctionnement de l'association service -> collector."""
        service = DBSession.query(self.klass).one()
        collector = functions.add_lowlevelservice(
            service.host.name,
            u'Collector'
        )
        service.idcollector = collector.idservice
        DBSession.flush()

        assert_equals(service.idcollector, collector.idservice)
        assert_equals(service.collector, collector)
Пример #17
0
    def do_get_dependencies(self):
        """Generate some data for the test"""
        ModelTest.do_get_dependencies(self)
        host = functions.add_host(u'myhost')
        service = functions.add_lowlevelservice(host, u'myservice')
        depgroup = functions.add_dependency_group(
                        host, service, u'topology', u'+')

        return dict(
            idgroup=depgroup,
            supitem=service,
        )
Пример #18
0
    def do_get_dependencies(self):
        """Generate some data for the test"""
        ModelTest.do_get_dependencies(self)

        # Création du groupe de cartes racine.
        functions.add_mapgroup(u'Root')

        # Création des objets nécessaires aux relations.
        new_map = functions.add_map(u'Carte 1')
        host = functions.add_host(u'host1.example.com')
        service = functions.add_lowlevelservice(host, u'myservice')
        return dict(map=new_map, service=service)
Пример #19
0
    def add_data(self):
        """
        Ajoute un hôte et un service de bas niveau dans la BDD, ainsi
        que d'autres données nécessaires à l'exécution des tests.
        """
        helpers.populate_statename()

        # Ajout de la date de dernière
        # modification de la topologie dans la BDD.
        DBSession.add(Change(
            element = u"Topology",
            last_modified = datetime.now(),))
        DBSession.flush()

        self.host = functions.add_host(u'Host')
        self.lls = functions.add_lowlevelservice(self.host, u'LLS')
Пример #20
0
def insert_deps():
    """Insère les dépendances nécessaires aux tests."""
    timestamp = datetime.now()

    hostgroup = functions.add_supitemgroup(u'foo')
    host = functions.add_host(u'bar')
    hostgroup.supitems.append(host)
    DBSession.flush()

    servicegroup = functions.add_supitemgroup(u'bar')
    service = functions.add_lowlevelservice(host, u'baz')
    servicegroup.supitems.append(service)
    DBSession.flush()

    event = functions.add_event(service, u'WARNING', u'Hello world', timestamp)
    functions.add_correvent([event], timestamp=timestamp)
    return (hostgroup, servicegroup)
Пример #21
0
    def do_get_dependencies(self):
        """Generate some data for the test"""
        ModelTest.do_get_dependencies(self)

        # Création du groupe de cartes racine.
        functions.add_mapgroup(u'Root')

        # Création des objets nécessaires  aux relations.
        new_map = functions.add_map(u'Carte 1')
        host1 = functions.add_host(u'host1.example.com')
        host2 = functions.add_host(u'host2.example.com')
        reference = functions.add_lowlevelservice(host1, u'myservice')
        from_node = functions.add_node_host(host1, u'Host 1', new_map)
        to_node = functions.add_node_host(host2, u'Host 2', new_map)
        return dict(from_node=from_node,
                    to_node=to_node,
                    map=new_map,
                    reference=reference)
Пример #22
0
 def test_lls_mapnode(self):
     """Suppression des mapnodes d'un lls supprimé (#57)"""
     # Mettre localhost sur une carte
     h = fct.add_host(u"localhost")
     s = fct.add_lowlevelservice(h, "testservice")
     testmap = fct.add_map(u"Test map")
     fct.add_node_lls(s, "testservice", testmap)
     DBSession.flush()
     DBSession.delete(s)
     DBSession.flush()
     # On vérifie que la suppression du lls a bien supprimé ses
     # représentations cartographiques
     mn_count = DBSession.query(tables.MapNode).count()
     self.assertEquals(mn_count, 0)
     mns_count = DBSession.query(tables.MapNodeService).count()
     self.assertEquals(mns_count, 0)
     mnlls_count = DBSession.query(tables.MapNodeLls).count()
     self.assertEquals(mnlls_count, 0)
Пример #23
0
def insert_deps(return_service):
    """
    Insère les dépendances nécessaires aux tests.

    @param return_service: Indique si les événements générés
        concernent un hôte (False) ou un service de bas niveau (True).
    @type return_service: C{bool}
    @return: Renvoie un tuple avec le groupe d'hôte créé,
        l'identifiant du L{CorrEvent} généré et enfin,
        l'identifiant de l'L{Event} généré.
    @rtype: C{tuple}
    """
    timestamp = datetime.now()

    hostgroup = functions.add_supitemgroup(u'foo')
    host = functions.add_host(u'bar')
    hostgroup.supitems.append(host)
    DBSession.flush()

    servicegroup = functions.add_supitemgroup(u'bar')
    service = functions.add_lowlevelservice(host, u'baz')
    servicegroup.supitems.append(service)
    DBSession.flush()

    if return_service:
        event = functions.add_event(service, u'WARNING', u'', timestamp)
    else:
        event = functions.add_event(host, u'WARNING', u'', timestamp)

    correvent = functions.add_correvent([event], timestamp=timestamp)

    usergroup = UserGroup.by_group_name(u'users_with_access')
    DBSession.add(DataPermission(
        usergroup=usergroup,
        group=hostgroup,
        access=u'r',
    ))
    DBSession.flush()
    transaction.commit()

    correvent = DBSession.query(CorrEvent).first()
    event = DBSession.query(Event).first()
    return (correvent.idcorrevent, event.idevent)
Пример #24
0
    def setUp(self):
        """Initialisation d'une réplique du RuleDispatcher."""
        self.mp = MessagePublisher(
                helpers.settings['correlator']['nagios_hls_host'], {})
        self.mp.sendMessage = Mock()

        # Initialisation de la BDD
        helpers.setup_db()

        # Ajout des noms d'états dans la BDD
        helpers.populate_statename()

        # Ajout d'un hôte dans la BDD
        self.host1 = functions.add_host(u'host1.example.com')

        # Ajout d'un service de haut niveau dans la BDD
        self.hls1 = functions.add_highlevelservice(u'Connexion')

        # Ajout d'un service de bas niveau dans la BDD
        self.lls1 = functions.add_lowlevelservice(self.host1, u'Processes')

        # Création d'un timestamp à partir de l'heure actuelle
        self.timestamp = datetime.now()
        self.int_timestamp = int(mktime(self.timestamp.timetuple()))
Пример #25
0
 def make_dependencies(self):
     """Création de quelques dépendances dans la BDD."""
     host = functions.add_host(u'server.example.com')
     functions.add_lowlevelservice(host, u'Load')
     functions.add_highlevelservice(u'Load')
Пример #26
0
 def do_get_dependencies(self):
     """Insertion de données dans la base préalable aux tests."""
     ModelTest.do_get_dependencies(self)
     host = functions.add_host(u'myhost')
     service = functions.add_lowlevelservice(host, u'myservice')
     return dict(supitem=service)
Пример #27
0
def populate_DB():
    """ Peuple la base de données. """

    # Création des 4 groupes de supitems :
    # - 1 groupe racine 'root' ;
    root = functions.add_supitemgroup(u'root')
    # - 1 groupe principal 'maingroup' ;
    maingroup = functions.add_supitemgroup(u'maingroup', root)
    # - 2 sous-groupes 'group1' et 'group2', faisant tous
    #   les deux parties du groupe principal 'maingroup'.
    group1 = functions.add_supitemgroup(u'group1', maingroup)
    group2 = functions.add_supitemgroup(u'group2', maingroup)

    # Création de 2 groupes d'utilisateurs (contenant chacun un utilisateur) :
    vigiboard_perm = Permission.by_permission_name(u'vigiboard-access')
    # - le premier avec des droits étendus
    #   (il a indirectement accès à tous les groupes de supitems) ;
    usergroup = UserGroup(group_name=u'users_with_access')
    usergroup.permissions.append(vigiboard_perm)
    DBSession.add(DataPermission(
        group = root,
        usergroup = usergroup,
        access = u'r',
    ))
    user = User(
        user_name=u'access',
        fullname=u'',
        email=u'user.has@access',
    )
    user.usergroups.append(usergroup)
    DBSession.add(user)

    # - le second avec des droits plus restreints
    #   (il n'a accès qu'au groupe de supitems 'group1').
    usergroup = UserGroup(group_name=u'users_with_limited_access')
    usergroup.permissions.append(vigiboard_perm)
    DBSession.add(DataPermission(
        group = group1,
        usergroup = usergroup,
        access = u'r',
    ))
    user = User(
        user_name=u'limited_access',
        fullname=u'',
        email=u'user.has.limited@access',
    )
    user.usergroups.append(usergroup)
    DBSession.add(user)
    DBSession.flush()

    # Création de 3 hôtes (1 par groupe de supitems).
    maingroup_host = functions.add_host(u'maingroup_host')
    group1_host = functions.add_host(u'group1_host')
    group2_host = functions.add_host(u'group2_host')

    # Affectation des hôtes aux groupes.
    maingroup.supitems.append(maingroup_host)
    group1.supitems.append(group1_host)
    group2.supitems.append(group2_host)
    DBSession.flush()

    # Création de 3 services de bas niveau (1 par hôte).
    group1_service = functions.add_lowlevelservice(
        group1_host, u'group1_service')
    group2_service = functions.add_lowlevelservice(
        group2_host, u'group2_service')
    maingroup_service = functions.add_lowlevelservice(
        maingroup_host, u'maingroup_service')

    # Ajout de 6 événements (1 par supitem)
    event1 = functions.add_event(maingroup_host, u'WARNING', u'foo')
    event2 = functions.add_event(maingroup_service, u'WARNING', u'foo')
    event3 = functions.add_event(group1_host, u'WARNING', u'foo')
    event4 = functions.add_event(group1_service, u'WARNING', u'foo')
    event5 = functions.add_event(group2_host, u'WARNING', u'foo')
    event6 = functions.add_event(group2_service, u'WARNING', u'foo')

    # Ajout de 5 événements corrélés (1 pour chaque évènement,
    # sauf celui touchant le 'maingroup_service' qui sera rattaché
    # à l'évènement corrélé causé par le 'maingroup_host').
    functions.add_correvent([event1, event2])
    functions.add_correvent([event3])
    functions.add_correvent([event4])
    functions.add_correvent([event5])
    functions.add_correvent([event6])
    transaction.commit()
Пример #28
0
 def populate_db(self):
     helpers.populate_statename()
     self.host = functions.add_host(u'testhost')
     self.lls = functions.add_lowlevelservice(self.host, u'testservice')
Пример #29
0
 def _insert_test_data(self):
     """Création de quelques dépendances dans la BDD."""
     host = functions.add_host(u'server.example.com')
     functions.add_lowlevelservice(host, u'Load')
     functions.add_highlevelservice(u'Load')