# kpov_util should be imported by add_assignment.py instructions = { 'si': '''\

Ustvari dva navidezna računalnika - imenujmo ju SimpleArbiterDhcpGW in Student. Na računalniku Student ustvarite uporabnika z uporabniškim imenom {{peer_user}}. IP navideznega računalnika Student ter geslo za uporabnika {{peer_user}} nastavite sami.

Poskrbite, da se bo v sporočilu, ki se ob prijavi izpiše na računalniku Student, pojavil niz

{{niz}}

Temu sporočilu v angleščini rečemo message of the day oziroma MOTD. Ocenjevalni program pričakuje, da se bo ob koncu prijave pojavila ukazna vrstica oblike

username@hostname:~$ 
Pazite, da se bo takšna vrstica pojavila šele po nizu, ki ste ga dobili v teh navodilih. ''', 'en': '''\

Create two virtual machines named SimpleArbiterDhcpGW and Student. On Student, create a user with the username {{peer_user}}. Set the IP of Student and the password for {{peer_user}} yourself.

Set the message of the day (MOTD) on Student to

{{niz}}

This is the message which is displayed when you log in. The grading system expects that after login a prompt similar to

username@hostname:~$ 

appears. Make sure that this line shows up only after the string you got in these instructions. ''' } computers = { 'SimpleArbiterDhcpGW': { 'disks': [ { 'name': 'simpleArbiterDhcpGW', }, ], 'flavor': 'm1.tiny', 'network_interfaces': [{'network': 'net1'}, {'network': 'test-net'}], 'config_drive': True, 'userdata': {'string': "#!/bin/bash\nsed -i '/cloud/d' /etc/fstab\npoweroff &\n"} }, 'Student': { 'disks': [ { 'name': 'student-console', } ], 'flavor': 'm1.tiny', 'network_interfaces': [{'network': 'net1'}], 'config_drive': True, 'userdata': {'string': "#!/bin/bash\nsed -i '/cloud/d' /etc/fstab\npoweroff &\n"} } } networks = { 'net1': {'public': False}, 'test-net': {'public': True} } params_meta = { 'peer_ip': {'descriptions': {'si': 'IP računalnika', 'en':'IP'}, 'w': True, 'public':True, 'type': 'IP', 'generated': False}, 'peer_user': {'descriptions': {'si': 'ime uporabnika', 'en':'Username'}, 'w': False, 'public': True, 'type': 'username', 'generated': True}, 'peer_passwd': {'descriptions': {'si': 'geslo uporabnika', 'en': 'Password'}, 'w': True, 'public': True, 'type': 'alnumstr', 'generated': False}, 'niz': {'descriptions':{'si': 'niz, ki naj se v motd pokaže', 'en': 'The string which should be displayed in the MOTD'}, 'w': False, 'public': True, 'type': 'short_text', 'generated': True}, } def task(peer_ip, peer_user, peer_passwd, niz): "Check whether ssh works" return kpov_util.ssh_test(peer_ip, peer_user, peer_passwd) def gen_params(user_id, params_meta): return kpov_util.default_gen(user_id, params_meta) def task_check(results, params): niz = params['niz'] score = 0 hints = [] if results['ssh'] is True: score += 2 else: hints += ['ssh failed: ' + results['ssh']] if niz in results['motd']: score += 8 else: hints += ['wrong motd:\n' + results['motd'] + '\n'] return score, hints def prepare_disks(templates, task_params, global_params): write_default_config(templates['simpleArbiterDhcpGW'], global_params)