[vmchecker-dev] [vmchecker] Integrare modificări vmchecker

Lucian Adrian Grijincu lucian.grijincu at gmail.com
Sun Nov 7 23:08:20 EET 2010


2010/11/7 Calin Iorgulescu <calin.iorgulescu at gmail.com>:
> - în al doilea rând, ar fi fost foarte util dacă s-ar fi putut specifica în
> fișierul de configurare al assignment-ului o listă de fișiere/foldere care
> să fie copiate de pe mașina virtuală (avem unele task-uri la care preferăm
> să păstrăm unele fișiere pentru a putea verifica mai ușor în caz de
> copiere). Am verificat și primitva de copyfilesfromhosttoguest se împacă


cred că ai nevoie de copyfilesfromGUESTtoHOST, nu de copyfilesfromhosttoguest

> singură direct cu foldere. Tot ce ar trebui modificat ar fi vm-executor-ul
> să execute pull-ul și, respectiv, să le trimită împreună cu *.vmr-urile.


= Preluarea fișierelor din guest =
Am două propuneri

== 1. Listă de fișiere specificată pentru fiecare temă ==

În fișierul config trebuie specificată o listă a fișierelor de preluat
(implicit lista e vidă).

ConfigParser nu suportă liste, așa că o să trebuiască o singură
variabilă cu numele fișierelor separate prin spații, virgule, etc. (=>
restricții la numele fișierelor).

După rulare și după preluarea fișierelor din guest, dai drumul și la
copierea fișierelor ăstora din guest în host (nu dai fail dacă nu
găsești un fișier din listă, ci doar menționezi faptul în
vmchecker-error.vmr). La fel și cu copierea fișierelor prin ssh de pe
tester pe storer. Dacă nu găsești un fișier, continui fără el, dar
faci logging.

Chestia asta e oarecum limitată pentru că nu permite copierea unui
director întreg (cu oricâte fișiere cu oricâte nume), dar dacă
usecase-ul apare, se poate implementa.


== 2. Preluarea unei arhive ==
Acum se copiază din guest în host fișiere cu numele run.out, run.err
sau ceva de genul ăsta. Fișierele sunt create de scripturile de
testare. Scripturile de testare ar putea crea o arhivă cu niște
fișiere dorite pe fiecare temă/materie (de ex. poate se dorește
extragerea /etc/hosts, tot conținutul lui /etc/init.d/*, legături
simbolice toate cu drepturi, owner, grup, etc intacte.) Asta se poate
face ușor într-un tar.gz.


vmchecker va căuta dacă există fișierul
(vmchecker-extra-guest-results.tar.gz) în mașina virtuală după ce va
rula testele, îl va lua și-l va trimite pe storer împreună cu
rezultatele. Dacă arhiva nu este, nu-i bai, o ignorăm.


= Destinația din storer =

Eu aș pune fișierele astea într-un subdirector al lui results/ (de ex.
results/extra-guest-results/). Asta pentru a nu polua conținutul lui
results/.



> - în primul rând, la USO nu mai este necesar ca asistentul să valideze tema
> ca și corectitudine, deci aș fi vrut ca după evaluarea temei să se poată
> (opțional) rula un script care pe baza output-ului (vmchecker-std{out,err})
> să genereze un fișier grade.vmr cu nota deja trecută în el. Singura parte
> mai tricky aici ar fi specificarea directă a numelui fișierului script care
> să fie inclus în pack-ul trimis tester-ului.


Parsarea fișierelor și calculul depunctărilor se poate face în trei locuri:
* pe storer
* pe tester în host
* pe tester în guest


Există niște restricții:
* pe storer doresc ca nicio acțiune să nu mai fie executată de
utilizatorul uso/cpl/so/etc. Totul să fie făcut sub user www (asta
pentru a scăpa de cerința pentru posix-acl).
* pe tester(host) aș dori să se execute cât mai puține taskuri
adiționale. Asta pentru a reduce cerințele asupra mașinii și pentru
simplificare.
* pe tester(guest) nu mă interesează ce se întâmplă.


Se poate implementa funcționalitatea asta în tester(guest)?


PS: Am trimis și pe listă, poate ar cineva idei mai bune.

-- 
 .
..: Lucian


More information about the vmchecker-dev mailing list