Segnalazione #773
Detect e visualizzazione fact ansible per le macchine
0%
Description
Per le macchine per le quali abbiamo accesso come root, possiamo fare un giro di gather fact di ansible e mostrarne alcuni nell'interfaccia.
Questo può avere un'utilità generica e dare un meccanismo estensibile per raccogliere informazioni, tipo anche se una macchina è configurata con fuss-client.
Subtasks
Related issues
Associated revisions
Prototype a libvirt-based test environment. refs: #773
more experiments made with libvirt. refs: #773
Refactored testnet. refs: #773
Moved everything to test_network/ except the CLI itself. refs: #773
Assign IPs to domains. refs: #773
Updated test_network README. refs: #773
Wait for domains to be started. refs: #773
More flexible CLI and cleanup stderr noise. refs: #773
Merge remote-tracking branch 'origin/t748' into t773. refs: #773
Added an ansible setup to run tests on the fuss-test-network machines. refs: #773
Have the mock network activity match the test network hosts. refs: #773
Added host/group vars to connect to test machines. refs: #773
Moved test playbooks in playbooks/. refs: #773
Refactored playbook running so it can be wired into manager. refs: #773
Started working on running playbooks. refs: #773
remove nondeterminism. refs: #773
Run playbooks and dispatch their output to the hosts involved. refs: #773
Start saving a cache of ansible facts. refs: #773
Save a log of facts updates. refs: #773
Merge branch 't773'. Fixes: #773
Merge branch 'master' into t773. refs: #773
Added tabs to machine popup. refs: #773
New RefreshFacts operation. refs: #773
Export facts in machine data. refs: #773
Added a button to refresh facts. refs: #773
Show last collected facts. refs: #773
Show in the log when an operation is posted via API. refs: #773
Also show facts log in machine modal. refs: #773
Add a timestamp to ansible facts data. refs: #773
Find a machine in the store instead of looking up the mac for the name. refs: #773
Sync with master. refs: #773
Merge to master; UI is not finished, but it needs some analysis to see what is the desired way to present facts. Refs: #773
History
Updated by Elena Grandi almost 6 years ago
- Related to Segnalazione #738: Detect macchine configurate con fuss-client added
Updated by Elena Grandi almost 6 years ago
- Assignee set to Elena Grandi
Fare caching in memoria dei dati raccolti.
(nota: riassegnare poi ad Enrico per l'interfaccia)
Updated by Elena Grandi over 5 years ago
- Assignee changed from Elena Grandi to Enrico Zini
Implementata la raccolta dei fact, branch t773. I test controllano la presenza di alcuni fact che mi paiono particolarmente utili, (quindi sono un posto dove è documentato come reperirli).
Ti ripasso il ticket per review, e per la parte di inserimento nell'interfaccia.
Updated by Enrico Zini over 5 years ago
- Assignee changed from Enrico Zini to Elena Grandi
Grazie! Ho fatto refactoring per incastrare il tutto nel manager, in modo da poter mandare richieste e ricevere risultati.
Mi piacerebbe fare cache dei fact di ansible in un qualche storage, in modo da poterli sempre mostrare, ed eventualmente dare la possibilità di aggiornarli o aggiornarli periodicamente.
In teoria, lo store che immagazzina i dati effimeri potrebbe ascoltare HostFactsEvent
e salvarsi facts
. Se ti sembra una buona idea, puoi implementarlo?
Updated by Enrico Zini over 5 years ago
In questo branch c'è il test tests.test_playbook.TestPlaybook.test_run_playbook
che dipende da fuss-test-network, e viene saltato se fuss-test-network non è su.
Per tirare su la rete di test: fuss-test-network --start --verbose
. Serve che l'utente sia nel gruppo libvirt, e che la directory indicata dall'opzione --storage
sia accessibile e scrivibile dal gruppo libvirt. Dovrebbe dipendere solo da libvirt-clients
.
Siccome i test sono opzionali, non importa tirare su fuss-test-network
; se un giorno hai un momento per provarlo, però, magari mi dici se da te parte senza problemi.
Ho cambiato la mock data source per produrre nomi, IP e MAC corrispondenti a quelli usati da fuss-test-network
, cosí usando runserver si potranno effettivamente far girare playbook sulle macchine di prova.
Updated by Elena Grandi over 5 years ago
- Target version changed from 0.5 Run di playbook sui client to 0.6 Gestione di macchine spente
Sposto alla versione successiva per fare la release 0.5; qui manca da fare caching dei dati e poi ripassare ad enrico per l'interfaccia.
Al momento i fact vengono comunque visualizzati quando si è lanciato un playbook.
Updated by Elena Grandi over 5 years ago
- Assignee changed from Elena Grandi to Enrico Zini
Backend del caching dei facts implementato, riassegno per review && merge (credo valga la pena mergiarlo per avere un "punto fisso") e poi implementazione dell'interfaccia.
Updated by Enrico Zini over 5 years ago
Visto, discusso, mergiato su master. Lascio aperto il ticket assegnato a me per la parte di visualizzazione
Updated by Anonymous over 5 years ago
- Status changed from In elaborazione to Risolto
- % Done changed from 0 to 100
Applicata nel changeset fuss-manager|7e4f32cfbd8e15f7d013291ac5d4b5c9a4cd9e6b.
Updated by Enrico Zini over 5 years ago
- Assignee changed from Enrico Zini to Elena Grandi
In facts_loaded, the log is filled with information not taken from the event:
@asyncio.coroutine def facts_loaded(self, evt): ip = yield from self.name_to_ip(evt.name) mac = yield from self.ip_to_mac(ip) machine = self.machines.get(mac) old_facts_log = machine.facts_log.copy() machine.facts_log.append({ 'timestamp': time.time(), 'result': 'SUCCESS', 'details': {}, })
Is it intentional? Ideally, I'd like to take the timestamp from the event, and set details to the actual facts.
Updated by Enrico Zini over 5 years ago
Ah, I get it, the facts are stored only in the machine and not in the log, fair enough.
Would it make sense however to take the timestamp from the event, so it matches when the facts were actually collected?
Updated by Enrico Zini over 5 years ago
Also, is it intentional that "facts" is not in STATS_MACHINE_FIELDS ?
Updated by Enrico Zini over 5 years ago
Another feature request for the backend: machine.facts
currently contains only the key ansible_facts
; I'd like to have in it also the timestamp of its facts log, so that I can see how old are the facts and to which facts log they refer.
Presumably, they refer to the last successful entry in the facts log; still it would be nice to have the timestamp to see how old are the facts without iterating the facts log backwards.
Updated by Enrico Zini over 5 years ago
Another issue: if the machine is switched off, facts_failed tries to look up its mac address to get the machine record to update. However, when the machine is off, IP to MAC resolution does not work, the mac
variable is None
, self.machines.get(mac)
returns None
and the rest of the method fails.
Would it be possible / a good idea to look up the machine in the store by name directly, both in facts_loaded
and in facts_failed
, instead of trying to resolve its ip and mac?
Updated by Elena Grandi over 5 years ago
Enrico Zini ha scritto:
Also, is it intentional that "facts" is not in STATS_MACHINE_FIELDS ?
intenzionale sì, non sono sicura che sia la scelta giusta sul lungo periodo.
Se salvare o meno i facts su file credo che possa dipendere da quanto spesso li si richiede: se si tende a chiederli spesso forse non val la pena salvarli su file, se invece li si vuole richiedere più raramente vale sicuramente la pena.
Per il momento, credo che faccia comodo non averli salvati per non rendere completamente illeggibile lo stats file, cosa che di tanto in tanto è utile aprire per fare debugging.
Updated by Elena Grandi over 5 years ago
- Related to Segnalazione #829: Controllare che il caricamento degli stats non pialli l'esistente added
Updated by Elena Grandi over 5 years ago
- Assignee changed from Elena Grandi to Enrico Zini
Pushato t773 con le modifiche al backend:
- il timestamp è generato sul server in un momento solo e passato dalle varie parti
- la macchina a cui associare i facts è cercata per nome nello store anziché cercare di calcolarne l'ip.
Ho cercato di vedere se fosse facile ricevere già il mac dall'evento facts loaded, ma mi pareva che spostasse solo la ricerca anziché eliminarla, e quindi non ne valesse la pena.
Updated by Enrico Zini over 5 years ago
- Target version changed from 0.6 Gestione di macchine spente to 0.10 Prima validazione interfaccia
Updated by Enrico Zini over 5 years ago
- Assignee deleted (
Enrico Zini)
Fatto merge in master. I fact rimangono mostrati in modo grezzo, servirà capire in fase di ulteriore studio/validazione dell'interfaccia quale sia il modo piú utile per mostrare i fact.
Tolgo l'assegnazione del ticket finché non arriviamo a quella fase.
Start running ansible to get setup data. refs: #773