#!/usr/bin/env python # -*- coding: utf-8 -*- # TODO: finish thi # kpov_random_helpers should be imported by add_assignment.py instructions = { 'si':u""" Ustvari tri navidezne računalnike. Za disk prvega uporabi sliko diska simpleArbiterDhcp. Za enega od ostalih dveh (Z_DHCP) poskrbi, da bo dobil IP prek DHCP, pri čemer naj kot hostname strežniku pošlje ime, ki ga dobiš na simpleArbiterDhcp. Za drugega (BREZ_DHCP) poskrbi, da bo imel statično nastavljen IP. Prvi omrežni vmesnik računalnika SimpleArbiter naj bo povezan na Internet. Drugi naj bo povezan na neko lokalno omrežje, na katerega bosta priklopljena računalnika Z_DHCP ter BREZ_DHCP. Na računalniku Z_DHCP poskrbite, da bo ob pridobivanju naslova DHCP strežniku poslal tudi posebej nastavljeno ime računalnika (hostname), ki ne bo enako dejanskemu imenu računalnika (tistemu, ki ga izpiše ukaz hostname). Naslov BREZ_DHCP ter ime računalnika za Z_DHCP dobite ob zagonu run_test.py na računalniku SimpleArbiter. """ } computers = { 'Z_DHCP': { 'disks': [ { 'name': 'Z_DHCP', }, #{ 'name': 'CDROM', # 'options':{'readonly': True}, # 'parts': [],# no parts, no mounting. #} ], 'network_interfaces': [{'network': 'net1'}], 'flavor': 'm1.tiny', 'config_drive': False }, 'BREZ_DHCP': { 'disks': [ { 'name': 'BREZ_DHCP', }, #{ 'name': 'CDROM', # 'options':{'readonly': True}, # 'parts': [],# no parts, no mounting. #} ], 'network_interfaces': [{'network': 'net1'}], 'flavor': 'm1.tiny', 'config_drive': False }, 'SimpleArbiter': { 'disks': [ { 'name': 'simpleArbiterDhcp', # attempt automount }, #{ 'name': 'CDROM', # 'options': {'readonly': True}, # 'parts': [{'dev': 'b1', 'path': '/cdrom'}], #}, ], 'network_interfaces': [{'network': 'net1'}, {'network': 'test-net'}], 'flavor': 'm1.tiny', 'config_drive': False } } networks = { 'net1': {'public': False}, 'test-net': {'public': True} } params_meta = { 'IP_DHCP': {'descriptions': {'si': 'Naslov za DHCP'}, 'w': False, 'public': False, 'type': 'IP', 'generated': True}, 'Hostname_DHCP': {'descriptions': {'si': 'Ime DHCP'}, 'w': False, 'public': True, 'type': 'hostname', 'generated': True}, 'IP_static': {'descriptions': {'si': 'Naslov BREZ_DHCP'}, 'w': False, 'public': True, 'type': 'IP', 'generated': True}, 'IP_dhcp_static': {'descriptions': {'si': 'Dodeljen IP brez DHCP'}, 'w': False, 'public': False, 'type': 'IP', 'generated': True}, } def task(IP_DHCP, Hostname_DHCP, IP_static, MAC_static, IP_dhcp_static): from pexpect import pxssh import pexpect results = dict() # check hostname of DHCP # check the hostname in the response of IP_DHCP # check availability of IP_static # check non-availability of IP_dhcp_static return results def gen_params(user_id, params_meta): r = random.Random(user_id) # IP_NM, DNS_NM, IP_static, DNS_static) net = kpov_random_helpers.IPv4_subnet_gen(r, '172.23.128.0/18', 24) params['IP_DHCP'], params['IP_static'], params['IP_dhcp_static'] = kpov_random_helpers.IPv4_addr_gen(r, net, 3) params['Hostname_DHCP'] = kpov_random_helpers.hostname_gen(r) return params def task_check(results, params): import re score = -9 hints = [] if results['bla']: score += 3 return score, hints def prepare_disks(templates, task_params, global_params): # d = templates['simpleArbiterDhcp'] # create config for static_DHCP # set static_DHCP hostname write_default_config(templates['simpleArbiterDhcp'], global_params)