X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=system%2Fconfig_default.py;h=103fcc7f8bbde5d786c8321e03513a67100a0599;hb=8666ae7f0291e8d115e166ef555f02abafc40fc8;hp=5dbea7562b0489cb890095a0384da93de7611bfe;hpb=8325e6e88cf35da62d7bc44744980dc293e673d7;p=tests.git diff --git a/system/config_default.py b/system/config_default.py index 5dbea75..103fcc7 100644 --- a/system/config_default.py +++ b/system/config_default.py @@ -10,7 +10,9 @@ # values like 'hostname', 'ip' and the like are rewritten later with a TestPool object -domain="onelab.eu" +# so that sfa users get different mails whether they are based on pl or pg +pldomain="onelab.eu" +pgdomain="emulab.eu" ### for the sfa dual setup def login_base (index): @@ -63,6 +65,9 @@ def nodes(options,index): 'route_fields' : { 'subnet' : '0.0.0.0/0', 'next_hop' : 'xxx-deferred-xxx', }, + # boot cd settings + # we should have tags here instead of the hard-wired + # options set for GetBootMedium in TestNode.py }] def all_nodenames (options,index): @@ -74,14 +79,14 @@ def users (options) : 'user_fields' : {'first_name':'Admin', 'last_name':'Admin', 'enabled':'true', - 'email':'admin@%s'%domain, + 'email':'admin@%s'%pldomain, 'password':'testuseradmin'}, 'roles':['admin']}, {'name' : 'pi', 'key_names' : [ 'key_pi' ], 'user_fields' : {'first_name':'PI', 'last_name':'PI', 'enabled':'True', - 'email':'fake-pi1@%s'%domain, + 'email':'fake-pi1@%s'%pldomain, 'password':'testpi'}, 'roles':['pi']}, @@ -89,28 +94,28 @@ def users (options) : 'user_fields' : {'first_name':'PiTech', 'last_name':'PiTech', 'enabled':'true', - 'email':'fake-pi2@%s'%domain, + 'email':'fake-pi2@%s'%pldomain, 'password':'testusertech'}, 'roles':['pi','tech']}, {'name' : 'tech', 'key_names' : [ 'key_user' ], 'user_fields' : {'first_name':'Tech', 'last_name':'Tech', 'enabled':'true', - 'email':'fake-tech1@%s'%domain, + 'email':'fake-tech1@%s'%pldomain, 'password':'testtech'}, 'roles':['tech']}, {'name':'user', 'key_names' : [ 'key_user' ], 'user_fields' : {'first_name':'User', 'last_name':'User', 'enabled':'true', - 'email':'fake-user1@%s'%domain, + 'email':'fake-user1@%s'%pldomain, 'password':'testuser'}, 'roles':['user']}, {'name':'techuser', 'key_names' : [ 'key_user' ], 'user_fields' : {'first_name':'UserTech', 'last_name':'UserTech', 'enabled':'true', - 'email':'fake-tech2@%s'%domain, + 'email':'fake-tech2@%s'%pldomain, 'password':'testusertech'}, 'roles':['tech','user']}, @@ -126,7 +131,7 @@ def sites (options,index): 'login_base':login_base(index), 'abbreviated_name':'PlanetTest%d'%index, 'max_slices':100, - 'url':'http://test.%s'%domain, + 'url':'http://test.%s'%pldomain, 'latitude':float(latitude), 'longitude':float(longitude), }, @@ -340,18 +345,19 @@ def keys (options,index): initscript_by_name="""#!/bin/bash command=$1; shift slicename=$1; shift -stamp="the_script_name" -stampfile=/tmp/$stamp.stamp +stamp="initscript_by_name" +stampfile=/var/tmp/$stamp.stamp +date=$(date) -echo "Running initscript with command=$command and slicename=$slicename" +echo $date "Running initscript with command=$command and slicename=$slicename" function start () { - (echo Starting test initscript: $stamp on slicename $slicename ; date) >> $stampfile - echo "This is the stdout of the sliver $slicename initscript $command (exp. start) pid=$$" - echo "This is the stderr of the sliver $slicename initscript $command (exp. start) pid=$$" 1>&2 + (echo $date Starting test initscript: $stamp on slicename $slicename ; date) >> $stampfile + echo $date "This is the stdout of the sliver $slicename initscript $command (exp. start) pid=$$" + echo $date "This is the stderr of the sliver $slicename initscript $command (exp. start) pid=$$" 1>&2 } function stop () { - echo "Removing stamp $stampfile" + echo $date "Removing stamp $stampfile" rm -f $stampfile } function restart () { @@ -366,18 +372,20 @@ restart) restart ;; esac """ -initscript_by_code=initscript_by_name.replace("the_script_name","the_script_code") +initscript_by_code=initscript_by_name.replace("initscript_by_name","initscript_by_code") # one single initscript in the InitScripts table def initscripts(options,index): return [ { 'initscript_fields' : { 'enabled' : True, - 'name':'the_script_name', + 'name':'initscript_by_name', 'script' : initscript_by_name, }}, ] -# always return 2 slices -# one has an initscript code, the other one an initscript name +# returns 3 slices +# 1 has an initscript code +# 2 has an initscript name +# 3 is an omf-friendly slice def slices (options,index): def theslice (i): slice_spec = { 'slice_fields': {'name':'%s_sl%d'%(login_base(index),i), @@ -391,16 +399,24 @@ def slices (options,index): 'sitename' : login_base(index), 'owner' : 'pi', } - # odd one has an initscript_code - if i%2==1: + # 1st one has an initscript by code + if i%3==1: slice_spec['initscriptcode']=initscript_by_code - slice_spec['initscriptstamp']='the_script_code' - # even one has an initscript (name) + slice_spec['initscriptstamp']='initscript_by_code' + # 2nd one has an initscript by name + elif i%3==2: + slice_spec['initscriptname']='initscript_by_name' + slice_spec['initscriptstamp']='initscript_by_name' + # 3rd one is omf-friendly else: - slice_spec['initscriptname']='the_script_name' - slice_spec['initscriptstamp']='the_script_name' + # potentially turned off with config_no_omf + slice_spec ['omf-friendly'] = True return slice_spec - return [ theslice(i) for i in range (2*index-1,2*index+1) ] + # usual index is 1, additional plc's then get 2... + # so index=1 -> 1 - 2 - 3 + # index=2 -> 4 - 5 - 6 + # 3 * (index-1) + 1 = 3*index-2 .. same+3 = 3*index+1 + return [ theslice(i) for i in range (3*index-2,3*index+1) ] def all_slicenames (options,index): return [ slice['slice_fields']['name'] for slice in slices(options,index)] @@ -415,8 +431,12 @@ def tcp_specs (options,index): # slice1='%s_sl1'%login_base(1) slice2='%s_sl2'%login_base(1) - slice3='%s_sl3'%login_base(2) - slice4='%s_sl4'%login_base(2) + # with the addition of omf-friendly slices.. + slice3='%s_sl4'%login_base(2) + slice4='%s_sl5'%login_base(2) + +# NOTE: port 9999 is hard-wired in the code to be used for checking network readiness +# so it is not to be used here # bind on 0.0.0.0 and try to reach this on localhost # not expected to work same_node_same_slice_lo = { 'server_node': 'node1', 'server_slice': slice1, @@ -441,7 +461,7 @@ def tcp_specs (options,index): specs += [ same_node_same_slice ] # worth another try specs += [ same_node_2_slices ] - if options.size >1 : + if options.size > 1: specs += [ two_nodes_same_slice, two_nodes_2_slices ] return specs @@ -469,83 +489,98 @@ def plc (options,index) : 'vservername': 'deferred-vservername', 'vserverip': 'deferred-vserverip', 'role' : 'root', - 'PLC_NAME' : 'Regression TestLab', - 'PLC_ROOT_USER' : 'root@test.onelab.eu', - 'PLC_ROOT_PASSWORD' : 'test++', - 'PLC_SLICE_PREFIX' : 'auto', - 'PLC_SHORTNAME' : 'Rlab', - 'PLC_MAIL_ENABLED':'false', - 'PLC_MAIL_SUPPORT_ADDRESS' : 'thierry.parmentelat@inria.fr', - 'PLC_DB_HOST' : 'deferred-myplc-hostname', -# 'PLC_DB_PASSWORD' : 'mnbvcxzlkjhgfdsapoiuytrewq', - 'PLC_API_HOST' : 'deferred-myplc-hostname', - 'PLC_WWW_HOST' : 'deferred-myplc-hostname', - 'PLC_BOOT_HOST' : 'deferred-myplc-hostname', - 'PLC_NET_DNS1' : 'deferred-dns-1', - 'PLC_NET_DNS2' : 'deferred-dns-2', - 'PLC_RESERVATION_GRANULARITY':1800, - 'PLC_VSYS_DEFAULTS':' , vif_up, vif_down, fd_tuntap, promisc, ', + # these go to plc-config-tty + 'settings': { + 'PLC_NAME' : 'Regression TestLab', + 'PLC_ROOT_USER' : 'root@test.onelab.eu', + 'PLC_ROOT_PASSWORD' : 'test++', + 'PLC_SLICE_PREFIX' : 'auto', + 'PLC_HRN_ROOT': sfa_root(index), + 'PLC_SHORTNAME' : 'Rlab', + 'PLC_MAIL_ENABLED':'false', + 'PLC_MAIL_SUPPORT_ADDRESS' : 'thierry.parmentelat@inria.fr', + 'PLC_DB_HOST' : 'deferred-myplc-hostname', +# 'PLC_DB_PASSWORD' : 'mnbvcxzlkjhgfdsapoiuytrewq', + 'PLC_API_HOST' : 'deferred-myplc-hostname', + 'PLC_WWW_HOST' : 'deferred-myplc-hostname', + 'PLC_BOOT_HOST' : 'deferred-myplc-hostname', + 'PLC_NET_DNS1' : 'deferred-dns-1', + 'PLC_NET_DNS2' : 'deferred-dns-2', + 'PLC_RESERVATION_GRANULARITY':1800, + 'PLC_VSYS_DEFAULTS':' , vif_up, vif_down, fd_tuntap, promisc, ', + 'PLC_OMF_ENABLED' : 'true', + 'PLC_OMF_XMPP_SERVER': 'deferred-myplc-hostname', + }, 'expected_vsys_tags': [ 'vif_up', 'vif_down', 'fd_tuntap', 'promisc', ], # minimal config so the omf plugins actually trigger - 'PLC_OMF_ENABLED' : 'true', - 'PLC_OMF_XMPP_SERVER': 'deferred-myplc-hostname', 'sites' : sites(options,index), 'keys' : keys(options,index), 'initscripts': initscripts(options,index), 'slices' : slices(options,index), 'tcp_specs' : tcp_specs(options,index), - 'sfa' : sfa(options,index), + 'sfa' : sfa(options,index), 'leases' : leases (options, index), # big distros need more time to install nodes 'ssh_node_boot_timers': (40,38), 'ssh_node_debug_timers': (10,8), } -# NOTE: SFA currently has SFA_AGGREGATE_API_VERSION=2 baked into the code def sfa (options,index) : return { - # the default is to use AMs in the various aggregates.xml + # the port used to generate the various aggregates.xml # stack config_sfamesh to point to SMs instead 'neighbours-port':12346, + # the port that sfi connects to - used to be 12347 when the SM was still running + # but now the SM is just turned off for these tests + 'sfi-connects-to-port' : 12346, ## global sfa-config-tty stuff - 'SFA_REGISTRY_ROOT_AUTH' : sfa_root(index), - 'SFA_INTERFACE_HRN' : sfa_root(index), - 'SFA_REGISTRY_HOST' : 'deferred-myplc-hostname', - 'SFA_AGGREGATE_HOST': 'deferred-myplc-hostname', - 'SFA_SM_HOST': 'deferred-myplc-hostname', - 'SFA_PLC_URL' : 'deferred-myplc-api-url', - 'SFA_PLC_USER' : 'root@test.onelab.eu', - 'SFA_PLC_PASSWORD' : 'test++', + 'settings': { + 'SFA_REGISTRY_ROOT_AUTH' : sfa_root(index), + 'SFA_INTERFACE_HRN' : sfa_root(index), + 'SFA_REGISTRY_HOST' : 'deferred-myplc-hostname', + 'SFA_AGGREGATE_HOST': 'deferred-myplc-hostname', + 'SFA_SM_HOST': 'deferred-myplc-hostname', +# turning off SM and using only AM; be explicit on this as the default has changed in the code + 'SFA_SM_ENABLED' : 'false', + 'SFA_PLC_URL' : 'deferred-myplc-api-url', + 'SFA_PLC_USER' : 'root@test.onelab.eu', + 'SFA_PLC_PASSWORD' : 'test++', # use -c sfadebug to increment this one - 'SFA_API_LOGLEVEL': 1, + 'SFA_API_LOGLEVEL': 1, # use -c sfavoid to set this to 'void' - 'SFA_GENERIC_FLAVOUR' : 'pl', - 'SFA_AGGREGATE_ENABLED' : 'true', + 'SFA_GENERIC_FLAVOUR' : 'pl', + 'SFA_AGGREGATE_ENABLED' : 'true', + }, # details of the slices to create 'auth_sfa_specs' : [ test_auth_sfa_spec(options,index,rspec_style) for rspec_style in options.rspec_styles ] } -# rspecstyle is 'pl' for sfav1 or 'pg' for pgv2 +# rspec_style is 'pl' for sfav1 or 'pg' for pgv2 def test_auth_sfa_spec (options,index,rspec_style): + domain=pldomain if rspec_style=='pl' else pgdomain # the auth/site part per se login_base=sfa_login_base(index,rspec_style) hrn_prefix='%s.%s'%(sfa_root(index),login_base) def full_hrn(x): return "%s.%s"%(hrn_prefix,x) def full_mail(x): return "%s@test.%s"%(x,domain) - # 2 users + # 2 users; we use dashes on purpose, as it might show up in email addresses + pi_alias = 'pi-user' + user_alias = 'regular-user' +# pi_alias = 'pi' +# user_alias = 'user' + # pi_spec = { - 'name': 'pi', - 'email': full_mail ('piuser'), + 'name': pi_alias, + 'email': full_mail (pi_alias), 'key_name': 'key_sfapi', } - user_hrn = full_hrn ('us') user_spec = { - 'name': 'us', - 'email': full_mail ('regularuser'), + 'name': user_alias, + 'email': full_mail (user_alias), 'key_name': 'key_sfauser', - 'add_options': [ '--extra',"first_name=Fake", + 'register_options': [ '--extra',"first_name=Fake", '--extra',"last_name=SFA-style-%s"%rspec_style, ], 'update_options': [ '--extra',"enabled=true", @@ -554,7 +589,7 @@ def test_auth_sfa_spec (options,index,rspec_style): slice_spec = { 'name': 'sl', - 'add_options': [ '--researchers', user_hrn, + 'register_options': [ '--researchers', full_hrn (user_alias), # xxx '--extra', "description=SFA-testing-%s"%rspec_style, '--extra', "url=http://slice%d.test.onelab.eu/"%index, @@ -576,8 +611,26 @@ def test_auth_sfa_spec (options,index,rspec_style): } -def config (plc_specs,options): - result=plc_specs - for i in range (options.size): - result.append(plc(options,i+1)) +def config (plc_specs, options): + result = plc_specs + # plc 'index' starts with 1 + for i in range(options.size): + result.append(plc(options, i+1)) return result + +### for creating a sample config interactively +def sample_test_plc_spec (): + class Void: pass + + options = Void() + options.size = 1 + options.rspec_styles = ['pg'] + + return config([], options)[0] + +if __name__ == '__main__': + s = sample_test_plc_spec() + print('Sample plc_spec has the following keys') + for k in sorted(s.keys()): + print(k) +