Changeset 19cc408 for fedd/fedd_experiment_control.py
- Timestamp:
- Oct 3, 2008 4:46:21 PM (16 years ago)
- Branches:
- axis_example, compt_changes, info-ops, master, version-1.30, version-2.00, version-3.01, version-3.02
- Children:
- ea0a821
- Parents:
- 01073f7
- File:
-
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
fedd/fedd_experiment_control.py
r01073f7 r19cc408 29 29 from service_error import * 30 30 31 class fedd_ create_experiment_local:31 class fedd_experiment_control_local: 32 32 scripts = ["fed_bootstrap", "federate.sh", "smbmount.FreeBSD.pl", 33 33 "smbmount.Linux.pl", "make_hosts", "fed-tun.pl", "fed-tun.ucb.pl", 34 34 "fed_evrepeater", "rc.accounts.patch"] 35 35 36 def __init__(self,37 cert_file=None,38 cert_pwd=None,39 exp_stem="fed-stem",40 debug=False,41 muxmax=2,42 nthreads=2,43 randomize_experiments=False,44 scp_exec="/usr/bin/scp",45 scripts_dir="./",46 splitter=None,47 ssh_exec="/usr/bin/ssh",48 ssh_identity_file=None,49 ssh_keygen="/usr/bin/ssh-keygen",50 ssh_pubkey_file=None,51 ssh_type="rsa",52 tbmap=None,53 tclsh="/usr/local/bin/otclsh",54 tcl_splitter="/usr/testbed/lib/ns2ir/parse.tcl",55 trace_file=None,56 trusted_certs=None,57 ):58 self.scripts = fedd_create_experiment_local.scripts59 self.thread_with_rv = fedd_create_experiment_local.pooled_thread60 self.thread_pool = fedd_create_experiment_local.thread_pool61 62 self.cert_file = cert_file63 self.cert_pwd = cert_pwd64 self.exp_stem = exp_stem65 self.debug = debug66 self.muxmax = muxmax67 self.nthreads = nthreads68 self.randomize_experiments = randomize_experiments69 self.scp_exec = scp_exec70 self.scripts_dir = scripts_dir71 self.splitter = splitter72 self.ssh_exec=ssh_exec73 self.ssh_keygen = ssh_keygen74 self.ssh_identity_file = ssh_identity_file75 self.ssh_type = ssh_type76 self.state = { }77 self.tclsh = tclsh78 self.tcl_splitter = tcl_splitter79 self.tbmap = tbmap80 self.trace_file = trace_file81 self.trusted_certs=trusted_certs82 83 self.def_expstart = \84 "sudo -H /bin/sh FEDDIR/fed_bootstrap >& /tmp/federate";85 self.def_mexpstart = "sudo -H FEDDIR/make_hosts FEDDIR/hosts";86 self.def_gwstart = \87 "sudo -H FEDDIR/fed-tun.pl -f GWCONF>& /tmp/bridge.log";88 self.def_mgwstart = \89 "sudo -H FEDDIR/fed-tun.pl -f GWCONF >& /tmp/bridge.log";90 self.def_gwimage = "FBSD61-TUNNEL2";91 self.def_gwtype = "pc";92 93 94 if ssh_pubkey_file:95 try:96 f = open(ssh_pubkey_file, 'r')97 self.ssh_pubkey = f.read()98 f.close()99 except IOError:100 raise service_error(service_error.internal,101 "Cannot read sshpubkey")102 103 # Confirm federation scripts in the right place104 for s in self.scripts:105 if not os.path.exists(self.scripts_dir + "/" + s):106 raise service_error(service_error.server_config,107 "%s/%s not in local script dir" % (self.scripts_dir, s))108 36 class thread_pool: 109 37 def __init__(self): … … 139 67 self.changed.notifyAll() 140 68 self.changed.release() 141 142 143 69 144 70 class pooled_thread(Thread): … … 177 103 if self.pdata: 178 104 self.pdata.terminate() 105 106 def __init__(self, config=None): 107 self.scripts = fedd_experiment_control_local.scripts 108 self.thread_with_rv = fedd_experiment_control_local.pooled_thread 109 self.thread_pool = fedd_experiment_control_local.thread_pool 110 111 self.cert_file = None 112 self.cert_pwd = None 113 self.trusted_certs = None 114 115 if config.create_experiment_cert_file: 116 self.cert_file = config.create_experiment_cert_file 117 self.cert_pwd = config.create_experiment_cert_pwd 118 if config.create_experiment_trusted_certs: 119 self.trusted_certs = config.create_experiment_trusted_certs 120 121 if config.proxy_cert_file: 122 if not self.cert_file: 123 self.cert_file = config.proxy_cert_file 124 self.cert_pwd = config.proxy_cert_pwd 125 if config.proxy_trusted_certs: 126 if not self.trusted_certs: 127 self.trusted_certs = config.proxy_trusted_certs 128 129 if config.cert_file: 130 if not self.cert_file: 131 self.cert_file = config.cert_file 132 self.cert_pwd = config.cert_pwd 133 if config.trusted_certs: 134 if not self.trusted_certs: 135 self.trusted_certs = config.trusted_certs 136 137 self.exp_stem = "fed-stem" 138 self.debug = config.create_debug 139 self.muxmax = 2 140 self.nthreads = 2 141 self.randomize_experiments = False 142 self.scp_exec = "/usr/bin/scp" 143 self.scripts_dir = "/users/faber/testbed/federation" 144 self.splitter = None 145 self.ssh_exec="/usr/bin/ssh" 146 self.ssh_keygen = "/usr/bin/ssh-keygen" 147 self.ssh_identity_file = None 148 # XXX 149 self.ssh_pubkey_file = "/users/faber/.ssh/id_rsa.pub" 150 self.ssh_type = "rsa" 151 self.state = { } 152 self.tclsh = "/usr/local/bin/otclsh" 153 self.tcl_splitter = "/usr/testbed/lib/ns2ir/parse.tcl" 154 self.tbmap = { 155 'deter':'https://users.isi.deterlab.net:23235', 156 'emulab':'https://users.isi.deterlab.net:23236', 157 'ucb':'https://users.isi.deterlab.net:23237', 158 } 159 self.trace_file = sys.stderr 160 161 self.def_expstart = \ 162 "sudo -H /bin/sh FEDDIR/fed_bootstrap >& /tmp/federate"; 163 self.def_mexpstart = "sudo -H FEDDIR/make_hosts FEDDIR/hosts"; 164 self.def_gwstart = \ 165 "sudo -H FEDDIR/fed-tun.pl -f GWCONF>& /tmp/bridge.log"; 166 self.def_mgwstart = \ 167 "sudo -H FEDDIR/fed-tun.pl -f GWCONF >& /tmp/bridge.log"; 168 self.def_gwimage = "FBSD61-TUNNEL2"; 169 self.def_gwtype = "pc"; 170 171 172 if self.ssh_pubkey_file: 173 try: 174 f = open(self.ssh_pubkey_file, 'r') 175 self.ssh_pubkey = f.read() 176 f.close() 177 except IOError: 178 raise service_error(service_error.internal, 179 "Cannot read sshpubkey") 180 181 # Confirm federation scripts in the right place 182 for s in self.scripts: 183 if not os.path.exists(self.scripts_dir + "/" + s): 184 raise service_error(service_error.server_config, 185 "%s/%s not in local script dir" % (self.scripts_dir, s)) 186 187 self.soap_handlers = {\ 188 'Create': make_soap_handler(\ 189 CreateRequestMessage.typecode, 190 getattr(self, "create_experiment"), 191 CreateResponseMessage, 192 "CreateResponseBody"), 193 'Vtopo': make_soap_handler(\ 194 VtopoRequestMessage.typecode, 195 getattr(self, "get_vtopo"), 196 VtopoResponseMessage, 197 "VtopoResponseBody"), 198 'Vis': make_soap_handler(\ 199 VisRequestMessage.typecode, 200 getattr(self, "get_vis"), 201 VisResponseMessage, 202 "VisResponseBody"), 203 'Info': make_soap_handler(\ 204 InfoRequestMessage.typecode, 205 getattr(self, "get_info"), 206 InfoResponseMessage, 207 "InfoResponseBody"), 208 'Terminate': make_soap_handler(\ 209 TerminateRequestMessage.typecode, 210 getattr(self, "terminate_experiment"), 211 TerminateResponseMessage, 212 "TerminateResponseBody"), 213 } 214 215 self.xmlrpc_handlers = {\ 216 'Create': make_xmlrpc_handler(\ 217 getattr(self, "create_experiment"), 218 "CreateResponseBody"), 219 'Vtopo': make_xmlrpc_handler(\ 220 getattr(self, "get_vtopo"), 221 "VtopoResponseBody"), 222 'Vis': make_xmlrpc_handler(\ 223 getattr(self, "get_vis"), 224 "VisResponseBody"), 225 'Info': make_xmlrpc_handler(\ 226 getattr(self, "get_info"), 227 "InfoResponseBody"), 228 'Terminate': make_xmlrpc_handler(\ 229 getattr(self, "terminate_experiment"), 230 "TerminateResponseBody"), 231 } 232 233 def get_soap_services(self): 234 return self.soap_handlers 235 236 def get_xmlrpc_services(self): 237 return self.xmlrpc_handlers 179 238 180 239 def copy_file(self, src, dest, size=1024): … … 650 709 # No retry loop here. Proxy servers must correctly authenticate 651 710 # themselves without help 711 652 712 try: 653 713 ctx = fedd_ssl_context(self.cert_file, … … 666 726 msg.set_element_RequestAccessRequestBody( 667 727 pack_soap(msg, "RequestAccessRequestBody", req)) 728 668 729 try: 669 730 resp = port.RequestAccess(msg)
Note: See TracChangeset
for help on using the changeset viewer.