summaryrefslogtreecommitdiff
path: root/kpov_judge/tasks/isc_dhcp_live_boot
diff options
context:
space:
mode:
authorgasperfele@fri1.uni-lj.si <gasperfele@fri1.uni-lj.si@5cf9fbd1-b2bc-434c-b4b7-e852f4f63414>2014-12-17 18:18:53 +0000
committergasperfele@fri1.uni-lj.si <gasperfele@fri1.uni-lj.si@5cf9fbd1-b2bc-434c-b4b7-e852f4f63414>2014-12-17 18:18:53 +0000
commit7512e2c7555c6e3536e1bcb6b3a328d4e9aced77 (patch)
tree19d0fd22d4b19a3d240191e896f2fe9d57ab9863 /kpov_judge/tasks/isc_dhcp_live_boot
parent3d5dfa916fef693611a7857f01174e6a39148f01 (diff)
Added some comments/instructions in the task.py files, answered some questions in DEVELOPMENT-FAQ.txt
git-svn-id: https://svn.lusy.fri.uni-lj.si/kpov-public-svn/kpov-public@95 5cf9fbd1-b2bc-434c-b4b7-e852f4f63414
Diffstat (limited to 'kpov_judge/tasks/isc_dhcp_live_boot')
-rw-r--r--kpov_judge/tasks/isc_dhcp_live_boot/task.py101
1 files changed, 54 insertions, 47 deletions
diff --git a/kpov_judge/tasks/isc_dhcp_live_boot/task.py b/kpov_judge/tasks/isc_dhcp_live_boot/task.py
index 3667f8c..60616e5 100644
--- a/kpov_judge/tasks/isc_dhcp_live_boot/task.py
+++ b/kpov_judge/tasks/isc_dhcp_live_boot/task.py
@@ -15,19 +15,14 @@ SimpleArbiter naj dobi IP_GW. DHCP_server naj ga uporabi kot gateway.
Če se zaganja BootableClientB, naj se sistem zažene z live ISO in dobi svoj IP.
Če se zaganja katerikoli drug, naj se sistem zažene v datoteko z imenom A.
Tako BootableClientA kot BootableClientB naj bosta brez diskov.
-"""
-}
-instructions_en= {
-Set up 4 virtual computers - simpleArbiter, DHCP_server, BootableClientA and
+""", 'en': """Set up 4 virtual computers - simpleArbiter, DHCP_server, BootableClientA and
BootableClientB. The simpleArbiter reads the address IP_GW, IP_DHCP and finds
the file A.
On the DHCP_server set up a DHCP server with the help of ISC dhcp 3 on the address IP_DHCP.
Get SimpleArbiter to find IP_GW. Make the DHCP_server use it as a gateway.
If there is BootableClientB loading, make the system start-up with a live ISO and make it get hit own IP.
If there is anyone else loading, make the system load the file with the name A.
-Make BootableClientA and BootableClientB be without discs.
-
-
+Make BootableClientA and BootableClientB be without discs. """
}
computers = {
'DHCPServer': {
@@ -88,38 +83,50 @@ params_meta = {
def task(IP_DHCP, IP_GW, MAC_BOOT, BOOT_FNAME):
# check the IP
- import socket
- import os
- results={}
- try:
- if IP_DHCP.count('.')!=3 or IP_GW.count('.')!=3:
- results['IPcheck']=False
- socket.inet_pton(socket.AF_INET,IP_DHCP)
- socket.inet_pton(socket.AF_INET,IP_GW)
- results['IPcheck']=True
- # ping the DHCP server
- if os.system("ping "+IP_DHCP)==0:
- results[PingDHCP]=True
- print("Povezava z DHCP strežnikom je OK")
- # check whether the fname served by the dhcp server is
- # correct
- datoteka=open(BOOT_FNAME,"r")
- array=[]
- for line in datoteka:
- array.append(line)
- datoteka.close()
- #greš skozi array preverit ce je vse ok
- else:
- print("Povezava s strežnikom ni OK")
- results['PingDHCP']=False
- except FileNotFoundError:
- results['BootFname']=False
- return "Datoteka ne obstaja"
- except IOError:
- results['BootFname']=False
- return "I/O napaka"
- except OSError:
- results['IPcheck']=False
+ # TODO (polz): Do not use tabs instead of spaces!
+ import socket
+ import os
+ results={}
+ try:
+ # TODO (polz): What purpose does this check serve?
+ if IP_DHCP.count('.')!=3 or IP_GW.count('.')!=3:
+ results['IPcheck']=False
+ socket.inet_pton(socket.AF_INET,IP_DHCP)
+ socket.inet_pton(socket.AF_INET,IP_GW)
+ results['IPcheck']=True
+ # ping the DHCP server
+ # TODO (polz): Please use pexpect instead of os.system, it's much nicer.
+ # Also, test your functions. This function was obviously never run.
+ #
+ if os.system("ping "+IP_DHCP)==0:
+ results[PingDHCP]=True
+ print("Povezava z DHCP strežnikom je OK")
+ # check whether the fname served by the dhcp server is
+ # correct
+ # you should check the DHCP response from the server.
+ # You can use dhcpdump to get some packets, dhcping to create a
+ # DHCP Request. You may also use any other tool.
+ # If you choose to use dhcping, do not forget to set the hw address
+ # and ip arguments. You can simply feed it MAC_BOOT and IP_BOOT.
+ # dhcping -h MAC_BOOT -c IP_BOOT -V -r
+ # could work (but you should test it)
+ datoteka=open(BOOT_FNAME,"r")
+ array=[]
+ for line in datoteka:
+ array.append(line)
+ datoteka.close()
+ #greš skozi array preverit ce je vse ok
+ else:
+ print("Povezava s strežnikom ni OK")
+ results['PingDHCP']=False
+ except FileNotFoundError:
+ results['BootFname']=False
+ return "Datoteka ne obstaja"
+ except IOError:
+ results['BootFname']=False
+ return "I/O napaka"
+ except OSError:
+ results['IPcheck']=False
# check whether the fname served by the dhcp server is correct
# connect to the service in the special ISO
# check the MAC of the server on IP_BOOT
@@ -138,24 +145,24 @@ def task_check(results, params):
import re
score = 0
- #TO FINISH SCORING WE REQUIRE DICT KEYS AND FUNCTIONS gen_params AND task TO BE FINISHED
- #POINTS FOR EACH TASK MAY BE ADJUSTED IN THE FUTURE
+ #TO FINISH SCORING WE REQUIRE DICT KEYS AND FUNCTIONS gen_params AND task TO BE FINISHED
+ #POINTS FOR EACH TASK MAY BE ADJUSTED IN THE FUTURE
- #TASK1: all computers up
+ #TASK1: all computers up
if results['NM_nslookup'].find('Server:\t\t{0}\r'.format(params['DNS_NM'])) > -1:
score += 3
- #TASK2: SimpleArbeiter IP_GW
+ #TASK2: SimpleArbeiter IP_GW
if results['static_nslookup'].find('Server:\t\t{0}\r'.format(params['DNS_static'])) > -1:
score += 3
- #TASK3: SimpleArbeiter IP_DHCP
+ #TASK3: SimpleArbeiter IP_DHCP
if re.search(r'eth0 +802-.*connected', results['NM_nmcli']):
score += 2
- #TASK4: SimpleArbaiter IP_B
+ #TASK4: SimpleArbaiter IP_B
if re.search(r'eth0 +802-.*connected', results['static_nmcli']):
score += 2
if results['NoNameATM'].find('NoFormatATM'.format(params['NoNameAtm]))> -1:
- score +=2
- #Same pattern for other tasks
+ score +=2
+ #Same pattern for other tasks
return score
def prepare_disks(templates, params):