Project

General

Profile

Segnalazione #174

Controllare "Rimuovi macchina da cluster"

Added by Mark Caglienzi almost 8 years ago. Updated over 7 years ago.

Status:
Chiuso
Priority:
Normale
Start date:
01/25/2017
Due date:
% Done:

0%

Estimated time:

Description

Controllare che l'action di rimozione macchina da cluster faccia le cose giuste:
  • 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

Revision 569ace09 (diff)
Added by Mark Caglienzi over 7 years ago

Add 'redirect_url' in response data for the specific case. refs: #174

Revision 0ada6301 (diff)
Added by Mark Caglienzi over 7 years ago

Redirect to 'redirect_url' using jquery after successful action, defaulting to window.location. refs: #174

Revision bf1e4412
Added by Mark Caglienzi over 7 years ago

Merge branch 'master' into t174. refs: #174

History

#1

Updated by Mark Caglienzi almost 8 years ago

  • Status changed from Nuovo to In elaborazione
#2

Updated by Mark Caglienzi almost 8 years ago

  • Status changed from In elaborazione to Commenti
  • Assignee changed from Mark Caglienzi to Christopher R. Gabriel
Ho fatto un po' di prove:
  • 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)

#3

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...

#4

Updated by Mark Caglienzi almost 8 years ago

  • Status changed from Commenti to In elaborazione
#5

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.

#6

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'.

#7

Updated by Mark Caglienzi over 7 years ago

  • Status changed from Commenti to In elaborazione
#8

Updated by Mark Caglienzi over 7 years ago

  • Status changed from In elaborazione to Commenti
  • Assignee changed from Mark Caglienzi to Elena Grandi
520dc508:
  • 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 a host: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.

#9

Updated by Elena Grandi over 7 years ago

  • Assignee changed from Elena Grandi to Mark Caglienzi

Buildato e uploadato pacchetto con le modifiche.

#10

Updated by Christopher R. Gabriel over 7 years ago

  • Status changed from Commenti to Chiuso

Ok

Also available in: Atom PDF