def fullHostPage(self, host, start=None, duration=86400): """ Affichage de l'ensemble des graphes associes a un hote * d apres les donnees RRD * avec une date-heure de debut * pour une plage de temps @param host : hôte @type host : C{str} @param start : date-heure de debut des donnees @type start : C{str} @param duration : plage de temps des données. Parametre optionnel, initialisé a 86400 = plage de 1 jour. @type duration : C{str} @return: page avec les images des graphes et boutons de deplacement dans le temps @rtype: page html """ if start is None: start = int(time.time()) - int(duration) else: start = int(start) duration = int(duration) user = get_current_user() if user is None: return dict(host=host, start=start, duration=duration, presets=self.presets, graphs=[]) # Vérification des permissions de l'utilisateur sur l'hôte. if not config.is_manager.is_met(request.environ): # Récupération des groupes auxquels l'utilisateur a accès. supitemgroups = [sig[0] for sig in user.supitemgroups() if sig[1]] # On vérifie que l'hôte en question existe bel et bien. host_obj = Host.by_host_name(host) if not host_obj: message = _('No such host "%s"') % host LOGGER.warning(message) raise http_exc.HTTPNotFound(message) # Récupération des groupes dont l'hôte fait partie hostgroups = [g.idgroup for g in host_obj.groups] # Si aucun des groupes de l'hôte ne fait partie des groupes # auxquels l'utilisateur a accès, on affiche une erreur 403. if len(set(hostgroups).intersection(set(supitemgroups))) < 1: message = _('Access denied to host "%s"') % host LOGGER.warning(message) raise http_exc.HTTPForbidden(message) # Récupération de la liste des noms des graphes associés à l'hôte. graphs = DBSession.query( Graph.name ).distinct( ).join( (GRAPH_PERFDATASOURCE_TABLE, GRAPH_PERFDATASOURCE_TABLE.c.idgraph == Graph.idgraph), (PerfDataSource, PerfDataSource.idperfdatasource == GRAPH_PERFDATASOURCE_TABLE.c.idperfdatasource), (Host, Host.idhost == PerfDataSource.idhost), ).filter(Host.name == host) graphs = graphs.all() return dict(host=host, start=start, duration=duration, presets=self.presets, graphs=graphs)
def test_export_hosts_db(self): self.hostloader.load() h = Host.by_host_name(u'testserver1') self.assertNotEqual(h, None) self.assertEqual(h.name, u'testserver1') self.assertEqual(h.address, u'192.168.1.1')