Project

General

Profile

Segnalazione #71

App host

Added by Enrico Zini over 7 years ago. Updated over 7 years ago.

Status:
Chiuso
Priority:
Normale
Start date:
11/23/2016
Due date:
% Done:

0%

Estimated time:

Description

Porting del vecchio plugin host

Associated revisions

Revision 25072ee5 (diff)
Added by Mark Caglienzi over 7 years ago

Add draft host app. refs: #71

Revision 622a0e18 (diff)
Added by Mark Caglienzi over 7 years ago

Add host urls. refs: #71

Revision 90197c04 (diff)
Added by Mark Caglienzi over 7 years ago

Install host draft app. refs: #71

Revision 9dfc798e
Added by Mark Caglienzi over 7 years ago

Merge branch 'master' into t71. refs: #71

Revision 5d2d7940 (diff)
Added by Mark Caglienzi over 7 years ago

Show buttons for groups and current group in the page. refs: #71

Revision 4e5310f4 (diff)
Added by Mark Caglienzi over 7 years ago

Filter and show host list. Draft. refs: #71

Revision 74ad2e20 (diff)
Added by Mark Caglienzi over 7 years ago

Get all info from every host. refs: #71

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

Hit the octofuss database only once. refs: #71

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

Show data in a table. refs: #71

Revision 3489cb2a (diff)
Added by Mark Caglienzi over 7 years ago

Show table only if there are hosts in the group. refs: #71

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

Add TODO button to edit cluster. refs: #71

Revision 1af1acd7 (diff)
Added by Mark Caglienzi over 7 years ago

Use icons and strings to make easier to choose if we prefer one or the other (both it's too much, maybe). refs: #71

Revision 83e3b50c (diff)
Added by Mark Caglienzi over 7 years ago

Better I think. refs: #71

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

Draft group_edit view. refs: #71

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

Load string and gettext string for groups. refs: #71

Revision 28e664bc (diff)
Added by Mark Caglienzi over 7 years ago

Draft initial edit_group view and template. refs: #71

Revision 326cc917 (diff)
Added by Mark Caglienzi over 7 years ago

Hit the octofuss database only when creating hosts list. refs: #71

Revision 6bb355df (diff)
Added by Mark Caglienzi over 7 years ago

First chunk of code to get the actions via ajax. refs: #71

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

Sort actions by order. In the old code this was done in javascript. refs: #71

Revision 4a6b0335 (diff)
Added by Mark Caglienzi over 7 years ago

Work in progress to add widgets in the HTML code via javascript, based on actions got via ajax call. refs: #71

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

Not working. Commit to allow some sort of pair programming. refs: #71

Revision 72996b40 (diff)
Added by Mark Caglienzi over 7 years ago

Show dummy buttons for nudge actions. refs: #71

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

Add a dummy alert via the onclick attribute. refs: #71

Revision 738c794b (diff)
Added by Mark Caglienzi over 7 years ago

Somewhat show also freeform widgets. refs: #71

Revision 8f23aa6a (diff)
Added by Mark Caglienzi over 7 years ago

The onclick attribute is for the button, not the input. refs: #71

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

Add draft choice action. To be at least tried with a group/cluster with a choice action among its actions. refs: #71

Revision c007fa16
Added by Mark Caglienzi over 7 years ago

Merge branch 'master' into t71. refs: #71

Revision 0b18006c
Added by Mark Caglienzi over 7 years ago

Merge branch 'master' into t71. refs: #71

Revision f4d37881
Added by Mark Caglienzi over 7 years ago

Merge branch 'master' into t71. refs: #71

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

WIP actions jquery-ui widget. refs: #71

Revision 321954ff (diff)
Added by Mark Caglienzi over 7 years ago

WIP group_edit.html template for the new jquery-ui widget. refs: #71

Revision 14904ff2 (diff)
Added by Mark Caglienzi over 7 years ago

groups are a 3-tuple now (think about simplifying things. refs: #71

Revision 825c225e (diff)
Added by Mark Caglienzi over 7 years ago

Port also freeform action code (which was not complete) from old code to jquery-ui widget. refs: #71

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

Add draft choice_action() to the widget. refs: #71

Revision 340e2aeb (diff)
Added by Mark Caglienzi over 7 years ago

Add ActionAJAX view in a very draft shape, and refactor an ActionsMixin out of the two views. refs: #71

Revision 901549f6 (diff)
Added by Mark Caglienzi over 7 years ago

Remove code from here. refs: #71

Revision 6653e2be (diff)
Added by Mark Caglienzi over 7 years ago

Allow creation of a dummy url. refs: #71

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

Explicit the limited choices for action in the url, adding also _action to allow creating a dummy url. refs: #71

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

Build the right url in nudge actions for groups/clusters. refs: #71

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

Draft ajax POST. refs: #71

Revision 9ddfb9d8 (diff)
Added by Mark Caglienzi over 7 years ago

Take the CSRF token from the template context and save it in options. refs: #71

Revision 75a8c9c3 (diff)
Added by Mark Caglienzi over 7 years ago

Dummy post(). refs: #71

Revision 6aa92024 (diff)
Added by Mark Caglienzi over 7 years ago

Make the AJAX POST. refs: #71

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

Implement draft for nudge actions in group/cluster. No checking and no testing at the moment, but it seems to work prett good. refs: #71

Revision 184522a3 (diff)
Added by Mark Caglienzi over 7 years ago

Fix nudge. refs: #71

Revision 149f18aa (diff)
Added by Mark Caglienzi over 7 years ago

Cleanup. refs: #71

Revision 57f004e0 (diff)
Added by Mark Caglienzi over 7 years ago

Add freeform. refs: #71

Revision 4dee2209 (diff)
Added by Mark Caglienzi over 7 years ago

Add choice, not testable in editgroup. refs: #71

Revision 21ac7ce9 (diff)
Added by Mark Caglienzi over 7 years ago

Implement ActionAJAX.post() a little more, with some error checking and messaging. refs: #71

Revision 4bc05482 (diff)
Added by Mark Caglienzi over 7 years ago

Try to work to support HTTP 200 and errors. refs: #71

Revision 4dfde194
Added by Mark Caglienzi over 7 years ago

Merge branch 't71' of https://work.fuss.bz.it/git/octonet into t71. refs: #71

Revision 68c5da44 (diff)
Added by Mark Caglienzi over 7 years ago

Fix for all not working. refs: #71

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

Fix response. refs: #71

Revision 7804edbd (diff)
Added by Mark Caglienzi over 7 years ago

Inject error message. refs: #71

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

Fix avahi group button. refs: #71

Revision 42bb4c44
Added by Mark Caglienzi over 7 years ago

Merge branch 'master' into t71. refs: #71

Revision 1ece0e8d (diff)
Added by Mark Caglienzi over 7 years ago

Add support for success/error also to freeform widget. refs: #71

Revision 8912fa37 (diff)
Added by Mark Caglienzi over 7 years ago

Initial commit for HostEdit. refs: #71

Revision 46d7c33e (diff)
Added by Mark Caglienzi over 7 years ago

Move actions.js. refs: #71

Revision 883f869f (diff)
Added by Mark Caglienzi over 7 years ago

Load actions.js. refs: #71

Revision 285fbef5 (diff)
Added by Mark Caglienzi over 7 years ago

Add links and buttons to edit host. refs: #71

Revision 86840cab (diff)
Added by Mark Caglienzi over 7 years ago

Add draft host_edit.html template. refs: #71

Revision 5568e9cf (diff)
Added by Mark Caglienzi over 7 years ago

Get info from host. refs: #71

Revision 4f5d5002 (diff)
Added by Mark Caglienzi over 7 years ago

Show hostname instead of a complete dict. refs: #71

Revision 77c3c913 (diff)
Added by Mark Caglienzi over 7 years ago

Show host informations. refs: #71

Revision 677d6aaa (diff)
Added by Mark Caglienzi over 7 years ago

WIP JS code in the template. refs: #71

Revision 7083972f (diff)
Added by Mark Caglienzi over 7 years ago

Fix for host actions. refs: #71

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

Fix action_url for host editing. refs: #71

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

First tests for the host app. refs: #71

Revision 1dbc4e1d (diff)
Added by Mark Caglienzi over 7 years ago

Add another test. refs: #71

Revision 1b1b2a04 (diff)
Added by Mark Caglienzi over 7 years ago

Add some test for host:action_ajax view. refs: #71

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

Add a test, refactor a little, and add comments. refs: #71

Revision 446a6826 (diff)
Added by Mark Caglienzi over 7 years ago

Refactored a LoginMixin, to deduplicate copypasted code. refs: #71

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

Add another test. refs: #71

Revision 08ba0cc0 (diff)
Added by Mark Caglienzi over 7 years ago

Avoid exception in 'all' hosts page. refs: #71

Revision 5c4d0742 (diff)
Added by Mark Caglienzi over 7 years ago

Show back buttons with HTTP_REFERER. refs: #71

Revision 8a074044 (diff)
Added by Mark Caglienzi over 7 years ago

Add quote_plus and unquote_plus custom filters. refs: #71

Revision 8cf1046a (diff)
Added by Mark Caglienzi over 7 years ago

unquote_plus group names in group list. refs: #71

Revision 6ca57919 (diff)
Added by Mark Caglienzi over 7 years ago

Use unquote_plus template filter also here. refs: #71

Revision 27fe14c5 (diff)
Added by Mark Caglienzi over 7 years ago

unquote_plus also when editing cluster. refs: #71

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

Use decodeURIComponent to show unquoted strings for cluster names. refs: #71

Revision 253d0c77 (diff)
Added by Mark Caglienzi over 7 years ago

Keep commented out urls of different 'experiments'. refs: #71

Revision 23e3c537
Added by Mark Caglienzi over 7 years ago

Merge branch 'master' into t71. refs: #71

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

Add some tests for host action. refs: #71

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

Add other tests for cluster. refs: #71

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

Refactor some tests, writing a mixin that allows to deduplicate code and to test the same things for hosts and clusters. refs: #71

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

Refactor also the other tests. refs: #71

Revision 469a3d1c (diff)
Added by Mark Caglienzi over 7 years ago

Further refactor. refs: #71

Revision 6c1c4b3c (diff)
Added by Mark Caglienzi over 7 years ago

Comments. refs: #71

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

Add tests for the host creation. Not working. refs: #71

Revision 2d661269 (diff)
Added by Mark Caglienzi over 7 years ago

value comes from POST, not from kwargs. refs: #71

Revision 6fad9c1b
Added by Mark Caglienzi over 7 years ago

Merge branch 'master' into t71. refs: #71

Revision 9651420b (diff)
Added by Mark Caglienzi over 7 years ago

debug prints. refs: #71

Revision 6d088610 (diff)
Added by Mark Caglienzi over 7 years ago

Don't show edit button in 'all' hosts list page. refs: #71

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

Redirect to host:list if host:group_edit is manually called for 'all' group. refs: #71

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

Put this test in 'standby', priority is to deliver a usable UI to get feedback from users. refs: #71

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

Add forgotten super(). refs: #71

Revision 1592a687 (diff)
Added by Mark Caglienzi over 7 years ago

Use the right field. refs: #71

Revision 6f8dbaaf (diff)
Added by Mark Caglienzi over 7 years ago

Add draft completion widget in actions.js. refs: #71

Revision 27241a93 (diff)
Added by Mark Caglienzi over 7 years ago

Load select2 in group_edit.html and host_edit.html. refs: #71

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

Enable select2 for every select in the page, after having been rendered all the actions widgets. refs: #71

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

Add draft ajax view to get completion options for given action and target. refs: #71

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

As js files do not have access to django template tags, add an option to the actions widget initialization. refs: #71

Revision 8cc4e24a (diff)
Added by Mark Caglienzi over 7 years ago

Add the draft invocation of the new AJAX view in the completion widget initialization. refs: #71

Revision 24a7ce10 (diff)
Added by Mark Caglienzi over 7 years ago

Fix regex. refs: #71

Revision 9aa5c9fe (diff)
Added by Mark Caglienzi over 7 years ago

Pass action_completion_url to the constructor. refs: #71

Revision 49a598de (diff)
Added by Mark Caglienzi over 7 years ago

Set base_path in the action's JSON. refs: #71

Revision 8e0ba87b (diff)
Added by Mark Caglienzi over 7 years ago

Implement ActionCompletionAJAX.get(). refs: #71

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

Implement the select population in actions.js. refs: #71

Revision 5fbd8e07
Added by Mark Caglienzi over 7 years ago

Merge branch 'master' into t71. refs: #71

History

#1

Updated by Mark Caglienzi over 7 years ago

  • Status changed from Nuovo to In elaborazione
  • Assignee set to Mark Caglienzi
#2

Updated by Mark Caglienzi over 7 years ago

326cc917:
  • View di elenco macchine, con filtro per gruppi/cluster funzionante (senza il javascript della pagina vecchia, da indagare)
  • View di editing del gruppo abbozzata, e iniziale studio di tutta l'architettura javascript sottostante nel software vecchio (grazie Enrico per il supporto stamattina)

Da capire come sia meglio procedere. Io opterei per una riscrittura del javascript con jQuery anziché mantenere e riadattare il codice vecchio.

Questo è a grandi linee il funzionamento della pagina vecchia (lo scrivo qui per ricordarmi qualcosa quando ci tornerò su lunedì):
  • Ogni cluster ha delle proprie action, che possono anche cambiare nel tempo (per questo tutta l'architettura è dinamica e controllata via javascript e chiamate web asincrone), e che sono date da octofussd (facendo una query a /cluster/$NOMEGRUPPO/:actions:)
  • Ogni action, querata su octofussd, restituisce un JSON con i dati necessari (il tipo di action, il messaggio, eccetera)
  • Questo JSON viene usato dal javascript nella pagina per istanziare il pannello con i widget per quella determinata action (se è 'reboot', basterà un bottone. Se è 'cambia nome alla macchina' ci vorrà un campo testo, e così via)
  • On load della pagina c'è una chiamata all'istanziazione di questi widget, che vengono rigenerati anche dal bottone refresh

Il codice javascript (sempre del vecchio octonet) si trova in octonet/static/javascript/actions.js, la parte python è in octonet/actions.py, e al solito octonet/plugins/host/controllers.py.

#3

Updated by Enrico Zini over 7 years ago

Sono d'accordissimo sul riscrivere il codice vecchio con jQuery piuttosto di riadattarlo.

Le action non ci sono solo nei cluster ma anche nei singoli host; per esempio, posso fare reboot di una macchina o di tutte le macchine di un gruppo.

#4

Updated by Enrico Zini over 7 years ago

  • Assignee changed from Mark Caglienzi to Enrico Zini
#5

Updated by Enrico Zini over 7 years ago

  • Assignee changed from Enrico Zini to Mark Caglienzi

Te la riassegno, l'avevo presa per sbaglio con git tl

#6

Updated by Mark Caglienzi over 7 years ago

c3970c3d:
  • Dopo brainstorming di ieri in ufficio con Enrico, riscrittura dei pezzi di javascript per le action come un widget jquery-ui
  • Implementazione di una bozza di view ajax per fare le azioni
  • Ora nella pagina di gruppi/cluster se si preme "Edit" vengono creati i widget (nudge, freeform, choice al momento)
  • I bottoni di tipo nudge sembra che invochino correttamente la view ajax di backend

Codice pushato nel branch per l'eventuale review dello stato parziale

#7

Updated by Mark Caglienzi over 7 years ago

Aggiornamento a 4f5d5002:
  • Parte di editing di cluster/gruppo fatta (aggiustati anche i problemi del bottone di editing rispetto ad alcuni gruppi)
  • Iniziata parte di editing della singola macchina
  • Refactoring di actions.js fatto da Enrico in #76 tirato dentro
  • Un po' di pair programming per particolari qua e là riguardanti le actions
  • Mancano i test di tutta l'app (buona parte del suo funzionamento è fatto via javascript)
  • Manca il controllo dell'input dei vari pezzi di infrastruttura riguardo i gruppi (:avahi: / avahi, encode/decode dei nomi di gruppo, ecc...) e il relativo testing
#8

Updated by Mark Caglienzi over 7 years ago

Aggiornamento a f29ffdaf:
  • Fatta l'ossatura dell'editing di host
  • E in questo caso compare anche un widget di tipo choice con la select (che nell'edit di cluster non compariva perché non necessario)
  • Nella pagina di elenco host il nome di ogni host è un link al suo edit, e c'è anche un bottone di editing (da capire poi se si vogliono mantenere entrambi per dare flessibilità, o tenerne uno solo per semplificare l'interfaccia)
  • Poi mi sono dedicato a scrivere un po' di test per l'app
  • Attualmente ci sono 12 test che fanno alcune prove per le due view principali: actions_ajax (che dà l'elenco delle action per un cluster o un host) e action_ajax (che fa l'action richiesta sul cluster o sull'host).
  • I test usano MockTree ovviamente, per non "sporcare" il database in uso di octofussd, e ho cercato di separare i test in classi diverse, secondo la view che testano.

I test riguardano il funzionamento solo via AJAX, e il verbo giusto (solo GET per actions_ajax e solo POST per action_ajax), e i vari tipi di response nei vari casi (ad esempio action_ajax dà 500 se si fa una POST AJAX a una action che non esiste, eccetera).

Mancano da aggiungere dei test, ma ora che c'è un draft di testsuite per l'app non dovrebbe essere troppo difficoltoso.

E sicuramente ci vorrà review della parte di frontend e di backend, e un po' di UI love.

#9

Updated by Mark Caglienzi over 7 years ago

Aggiornamento a 9651420b:
  • Mergiato master via via per non rimanere troppo disallineato
  • Refactoring dei test di host in modo da avere mixin per far girare i test delle view actions e action su host e cluster
  • Aggiunta di qualche test
  • Aggiunta di bottoni back (con referrer) alla UI
  • Fix di qualche bug trovato oggi (ad esempio nella view action per le action di tipo freeform, che prendeva il valore da kwargs anziché da POST (e quindi di fatto era sempre vuoto))
  • Problema visto oggi in serata e quindi da indagare: il test aggiunto riguardo alla creazione di un host in un cluster sembra dire che il codice non funzioni a dovere (ci sono delle print di debug nel test relativo), mentre provare ad aggiungere un host a un cluster nella UI sembra funzionare (probabilmente è un bug di MockTree?)

Codice pushato nel branch t71

#10

Updated by Mark Caglienzi over 7 years ago

  • Status changed from In elaborazione to Commenti
  • Assignee changed from Mark Caglienzi to Christopher R. Gabriel
305b8f38:
  • App host mergiata in master
  • Aggiunti i campi relativi alle action di tipo completion (necessarie per l'editing di host)
  • Le completion sono state implementate come select, popolate via AJAX da una view che restituisce il risultato di candidate nel tree della action, con l'aggiunta di una voce "vuota" con stringa "-----" (si può anche scegliere di mettere una stringa tipo "Please select..." ma dato che la cosa è implementata nel file actions.js bisognerà passare la stringa tradotta tramite la view in qualche modo, visto che nei file javascript non c'è accesso al sottosistema django di i18n.
  • A tutte le select è stato aggiunto il supporto alla ricerca con select2 (in fondo a actions.js)
  • La scrittura dei test è stata momentaneamente accantonata per permettere di avere l'app provabile e agevolare i feedback. In un secondo momento si potranno scrivere i test dopo validazione del funzionamento.
  • Piccoli fix vari
#11

Updated by Christopher R. Gabriel over 7 years ago

  • Status changed from Commenti to Chiuso

Ok, chiudo per aprire ticket specifici.

Also available in: Atom PDF