Segnalazione #174
Controllare "Rimuovi macchina da cluster"
0%
Description
- Mostri solo i cluster in cui l'host è incluso fra le opzioni della select
- All'atto del clic rimuova correttamente l'host dal cluster
Associated revisions
Redirect to 'redirect_url' using jquery after successful action, defaulting to window.location. refs: #174
Merge branch 'master' into t174. refs: #174
History
Updated by Mark Caglienzi almost 8 years ago
- Status changed from In elaborazione to Commenti
- Assignee changed from Mark Caglienzi to Christopher R. Gabriel
- Host presente in un solo cluster
- Rimozione dell'host dal cluster
- Errore 500 nella chiamata AJAX che elenca le actions perché l'host sparisce da
/computers/NOMEDELLHOST
, e quindi non ci sono actions.
- Host presente in due cluster
- Rimozione dell'host da uno dei due cluster
- Funzionamento corretto, l'host rimane presente solo nell'altro cluster, nessun errore né delle view ajax, né di quelle non ajax
Probabilmente è un bug dell'octofussd mock, che quando non trova un computer in nessun gruppo non lo aggiunge al tree (anche perché penso che in produzione si sarebbero accorti di un bug del genere, negli anni)
Updated by Christopher R. Gabriel almost 8 years ago
- Assignee changed from Christopher R. Gabriel to Mark Caglienzi
Se prendo un host in un solo cluster, e lo tolgo da quel cluster, mi rimane sulla pagina dell'host stesso, indicando via messages che l'azione e' andata a buon fine, permettendomi poi di poterlo togliere nuovamente dallo stesso cluster da cui l'ho appena tolto.
Se hai il dettaglio dell'error 500 riferito a octofussd si puo' indagare la tua ipotesi, come lo si ottiene? oppure me lo incolli qua...
Updated by Mark Caglienzi almost 8 years ago
- Status changed from In elaborazione to Commenti
- Assignee changed from Mark Caglienzi to Christopher R. Gabriel
Hai quel comportamento lì perché non c'è il reload alla fine della request. Se poi fai reload a mano vedi che non compaiono le actions. Non compaiono perché la chiamata ajax che le genera dà 500, perché non esiste più quel computer nel tree.
L'errore 500 lo puoi vedere disabilitando il metodo dispatch()
della ActionsAJAX (perché è fatta per funzionare solo via ajax) e visitando l'url http://127.0.0.1:8000/host/actions/host/NOME_DELL_HOST a mano, ed è questo:
Environment: Request Method: GET Request URL: http://127.0.0.1:8000/host/actions/host/daiiiiii Django Version: 1.8.8 Python Version: 3.5.3 Installed Applications: ['django.contrib.sessions', 'django.contrib.messages', 'whitenoise.runserver_nostatic', 'django.contrib.staticfiles', 'octonet', 'hostqueue.apps.HostQueue', 'firewall.apps.Firewall', 'dhcp.apps.Dhcp', 'dansguardian.apps.DansGuardian', 'host.apps.Host', 'polygen.apps.Polygen', 'upgrade.apps.Upgrade', 'asterisk.apps.Asterisk', 'samba.apps.Samba', 'users.apps.Users', 'script.apps.Script', 'quota.apps.Quota', 'printers.apps.Printers', 'auth.apps.Auth'] Installed Middleware: ['django.middleware.security.SecurityMiddleware', 'whitenoise.middleware.WhiteNoiseMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.middleware.locale.LocaleMiddleware', 'octonet.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware'] Traceback: File "/home/mark/truelite/FUSS/octonet/django/core/handlers/base.py" in get_response 132. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/mark/truelite/FUSS/octonet/django/views/generic/base.py" in view 71. return self.dispatch(request, *args, **kwargs) File "/home/mark/truelite/FUSS/octonet/octonet/mixins.py" in dispatch 105. return super().dispatch(request, *args, **kw) File "/home/mark/truelite/FUSS/octonet/django/views/generic/base.py" in dispatch 89. return handler(request, *args, **kwargs) File "/home/mark/truelite/FUSS/octonet/host/views.py" in get 234. data_list = self.get_sorted_actions(data) File "/home/mark/truelite/FUSS/octonet/host/views.py" in get_sorted_actions 267. for action in actions_from_octofussd: Exception Type: TypeError at /host/actions/host/daiiiiii Exception Value: 'NoneType' object is not iterable
Se poi vai a vedere in octofussctl, noterai che quel computer (che nel mio esempio si chiama daiiiiii
) è proprio sparito da /computers/nome_dell_host
.
Invece se prendi un host che è in più di un cluster, e lo rimuovi da un cluster, tutto questo non succede.
Dato che è un comportamento anomalo, e octofussd è in produzione da anni, mi vien da dire che sia un bug dell'octofussd mock, che non crea nel tree la voce dell'host se non lo trova in nessun gruppo.
Updated by Christopher R. Gabriel almost 8 years ago
- Assignee changed from Christopher R. Gabriel to Mark Caglienzi
Il comportamento lato octofussd e' corretto, perche' se un host non e' in nessun cluster, non esiste.
se si toglie un host da un cluster, e questo host non ha piu' cluster, allora direi che dopo l'operazione deve tornare all'elenco degli host, invece che rimanere nella pagina dell'host che non esiste piu'.
Updated by Mark Caglienzi over 7 years ago
- Status changed from In elaborazione to Commenti
- Assignee changed from Mark Caglienzi to Elena Grandi
- Aggiunto il parametro 'redirect_url' alla response della chiamata ajax che fa la action
- Se l'action è "rimuovi host da cluster" allora controlla che l'host esista ancora (cioè che esista la voce
/computers/NOME_DEL_COMPUTER
), e se non esiste setta redirect_url ahost:list
- Il javascript poi fa redirect a redirect_url, se c'è, e altrimenti lo fa a
window.location
, di fatto ricaricando la pagina come faceva già prima
In questo modo si evita il redirect a una pagina vuota, per un host che non esiste più, e con una chiamata ajax in errore.
Inoltre è possibile personalizzare ulteriormente i redirect per ogni singola action, volendo.
Mergiato in master e pushato.
Pacchetto da rebuildare: octonet.
Updated by Elena Grandi over 7 years ago
- Assignee changed from Elena Grandi to Mark Caglienzi
Buildato e uploadato pacchetto con le modifiche.
Add 'redirect_url' in response data for the specific case. refs: #174