- 09 Mar, 2005 1 commit
-
-
Timothy Stack authored
-
- 08 Mar, 2005 1 commit
-
-
Timothy Stack authored
Fix a couple of things I missed in my last checkin. * event/program-agent/program-agent.c: Setup of the user environment variables wasn't ordered correctly. * event/sched/event-sched.c, event/sched/rpc.h, event/sched/rpc.cc: Setup the expected user environment variables, just like in program-agent. * event/sched/simulator-agent.cc: Rename the old feedback data so we don't lose it in case the vnode remapping modify fails. * xmlrpc/emulabserver.py.in: Add virt_user_environment table data to the result of the experiment.metadata method, so the event-scheduler can get it.
-
- 06 Mar, 2005 1 commit
-
-
Timothy Stack authored
-
- 09 Feb, 2005 1 commit
-
-
Timothy Stack authored
Robot-related improvements based on feedback from Sid: * event/sched/event-sched.h, event/sched/event-sched.c, event/sched/rpc.h, event/sched/rpc.cc: Send a notification of the start of event time and timelines. Add a '-r' option that forces it to use the default rpc path (so dan can use a custom scheduler/rmcd/etc on ops). * robots/GNUmakefile.in, robots/emc/GNUmakefile.in, robots/mtp/GNUmakefile.in, robots/primotion/GNUmakefile.in, robots/rmcd/GNUmakefile.in, robots/vmcd/GNUmakefile.in, robots/tbsetdest/tbsetdest.cc: Add a control-install target. * robots/primotion/garcia-pilot.cc: Take out some experimental code. * robots/primotion/dashboard.hh, robots/primotion/dashboard.cc, robots/primotion/pilotClient.cc, robots/primotion/wheelManager.hh, robots/primotion/wheelManager.cc: When doing a COMMAND_STOP, make sure we only send one update packet, an idle or an abort. Also send back the actual distance travelled/pivoted. * robots/tbsetdest/tbsetdest.cc: Don't output setdest event's with a speed of zero. * tbsetup/eventsys_control.in: When replaying/stopping, clear the start of event time for the experiment. * tbsetup/power_mail.pm.in: Decrease the threshold used to tell if a node has been power cycled "recently". * tbsetup/ns2ir/node.tcl, tbsetup/ns2ir/sim.tcl.in: Bah, backout last change, orientation is supposed to be in degrees at these points. Also, when automatically picking the sync server, don't use nodes that are subnodes. * tmcd/common/bootsubnodes: Send an ISUP for motes. * www/moteleds.php3: Show the mote node names instead of the robots. * www/powertime.php3: Add option to mark nodes as powered off. * www/robotmap.php3: Display the elapsed time for the overall event time and for each active timeline. * www/showexp.php3: Only display the blinky lights menu item when there are motes. * www/shownode.php3: Change "Update Power Time" -> "Update Power State". * www/tutorial/mobilewireless.php3: Fix some nits. * xmlrpc/emulabserver.py.in: Add event_time_start method for storing/getting/clearing the start of event time for an experiment/timeline.
-
- 04 Feb, 2005 1 commit
-
-
Timothy Stack authored
Some more robot integration. * event/lib/event.h, event/lib/event.c: Add some event_notification creation functions that get used in event-sched. * event/sched/event-sched.c, event/sched/rpc.h, event/sched/rpc.cc: Sync the start of event time with the robots reaching their initial positions. This is done by creating a master event-sequence that takes care of sending the SETDEST events and then starting the Simulator timeline. * mote/tbuisp.in: Use node_reboot instead of ssh'ing in. * robots/GNUmakefile.in: Don't build tbsetdest if ulsshxmlrpcpp is not available. * robots/emc/loclistener.in: Clear the destination values for a node when it reaches its destination. * robots/primotion/garcia-pilot.cc, robots/primotion/pilotClient.cc: Some cleanup and debugging. * robots/primotion/wheelManager.cc: Check the rear sensors for obstructions and then decide which way to pivot. * robots/rmcd/pilotConnection.h, robots/rmcd/pilotConnection.c, robots/rmcd/rclip.h: Even more tweaking. * robots/tbsetdest/tbsetdest.cc: Don't generate points that are outside the camera bounds or inside an obstacle. * robots/vmcd/visionTrack.c, robots/vmcd/vmcd.h, robots/vmcd/vmcd.c: Add more debugging output. * tbsetup/os_setup.in: Removed the robot hack used when deciding which nodes to reconfig/reboot. Added a robot hack to avoid rebooting a robot whose mote is being os_load'd, since it would interrupt tbuisp which does the reboot anyways. Also fixed a small typo. * tbsetup/ns2ir/node.tcl, tbsetup/ns2ir/sim.tcl.in: Oops, forgot to convert degrees to radians. * tbsetup/ns2ir/topography.tcl: When checking for node destination points in obstacles, include the implicit exclusion zone. * tmcd/common/bootsubnodes: Add empty "mote" case. * tmcd/linux-sg/GNUmakefile.in: Make some of the /etc subdirs when doing the install. * tmcd/linux-sg/rc.stargate: Start garcia-pilot. * vis/floormap.in: Add options for showing the camera bounds, obstacle exclusion zones, and displaying vnames instead of pnames. * www/ledpipe.php3: Finally figured out how to use a socket instead of popening a perl script. * www/robotmap.php3: Add checkboxes for displaying/not displaying the camera bounds and obstacle exclusion zones. Add a legend showing what actual vs. destination points are. Pass pid/eid through to vis/floormap if it is given. * www/showexp.php3: Add a "Robot Map" link to experiments that have allocated garcias. * www/floormap/map_legend_node.gif, www/floormap/map_legend_node_dst.gif: Icons used by the robot map legend. * www/floormap/robots-4.jpg: Added an obstacle around the entryway so people are slightly less likely to trip over the robots. Added a coordinate system legend to the top left corner. * www/tutorial/mobilewireless.php3: Add links to David's movie of the robot making its way around the pillar. * www/tutorial/robot_anim.gif: A nifty gifanim clip of the robot movie. * xmlrpc/emulabserver.py.in: Pull the camera data from the DB, instead of returning hardcoded stuff.
-
- 17 Jan, 2005 2 commits
-
-
Timothy Stack authored
More robot tweaks: * event/sched/event-sched.c: Start rmcd, then vmcd. * event/sched/rpc.cc: Add camera dimensions to the config file. * robots/emc/emcd.c: Add camera dimensions to the config file and destroy vmc's position_list when it disconnects. * robots/mtp/mtp.x, robots/mtp/mtp.c: Add dimensions to the camera config and add a command_id field to the update_position packet. * robots/primotion/garcia-pilot.cc: Move the decl of the acpGarcia object below daemon(3) since it doesn't seem to like it when the parent process dies and fix the log file creation. * robots/primotion/pilotClient.cc: Pass the command_id back in any update_position packets. * robots/rmcd/rmcd.c: Use the command-id to distinguish between STOPs for the sake of a GOTO and a wiggle. * robots/vmcd/visionTrack.h, robots/vmcd/visionTrack.c: Only coalesce packets from different cameras (duh) and mess with the tolerances a little more. * xmlrpc/emulabserver.py.in: Add some rough camera dimensions.
-
Timothy Stack authored
More robot integration and some event system updates. * configure, configure.in: Detect rsync for loghole and add utils/loghole to the list of template files. * db/libdb.pm.in, db/xmlconvert.in: Add virt_node_startloc to the list of virtual tables. * event/lib/event.h, event/lib/event.c, event/lib/tbevent.py.tail: Add event_stop_main function to break out of the event_main() loop. Add timeline to the address tuple. * event/sched/GNUmakefile.in, event/sched/error-record.h, event/sched/error-record.c, event/sched/event-sched.8, event/sched/event-sched.h, event/sched/event-sched.c, event/sched/group-agent.h, event/sched/group-agent.c, event/sched/listNode.h, event/sched/listNode.c, event/sched/local-agent.h, event/sched/local-agent.c, event/sched/node-agent.h, event/sched/node-agent.cc, event/sched/queue.c, event/sched/rpc.h, event/sched/rpc.cc, event/sched/simulator-agent.h, event/sched/simulator-agent.c, event/sched/timeline-agent.h, event/sched/timeline-agent.c: Updated event schedu...
-
- 07 Nov, 2004 1 commit
-
-
Timothy Stack authored
Change to the SSL version of the event scheduler. * db/libdb.py.in, xmlrpc/emulabserver.py.in: Only add the testbed library path to sys.path if it is not already there. * event/sched/GNUmakefile.in: Make the SSL version of the scheduler the default instead of the SSH version and statically link the executable. * event/sched/event-sched.c: Pass the default SSL port number (3069) to RPC_init. * event/sched/rpc.cc: Bring the SSL code up to date: read the cert from the user's home directory, make the connection persistent, and use TBROOT as the request path, so the development version of the XML-RPC library is used when appropriate. * xmlrpc/sslxmlrpc_server.py.in: Updated to let the user select from a set of allowed library paths where the 'emulabserver' module should be imported from. Import the 'emulabserver' module after the fork so we always get the latest version of the module. Twiddled the necessary bits to turn on persistent connection support.
-
- 29 Oct, 2004 1 commit
-
-
Timothy Stack authored
Make the hurting stop. Make sshxmlrpc auto-detect things, fails over properly, and dump useful information when it is unable to deal with the peer. * xmlrpc/sshxmlrpc.py: Major update. It now tries to autoconfigure itself by scanning the path for "ssh" and "plink.exe" (although I haven't actually tried it on windows). Environment variables can now be used to turn on debugging and set the command to use for doing the ssh. Before running ssh, it will check for an agent or a passphrase-less key and prints a warning if it finds neither. The last five lines read from the server, as well as the standard error output, are stored so they can be dumped later; helpful for figuring out what is actually being run on the other side. The protocol layer between ssh and xml-rpc will now respond to a "probe" header so that clients can figure out who they are talking too. The server side will now properly detect a closed connection and not write anything, which means no more annoying "Write to stdout failed" messages. You can now pass additional options to ssh and set the identity. The module can be run standalone, with the default action being to probe the peer: $ ./sshxmlrpc.py ssh://boss/xmlrpc Probe results for: ssh://boss/xmlrpc response time=1.49 s Response Headers date: Wed Oct 27 16:10:58 2004 content-length: 0 probe: /usr/testbed/devel/stack/lib/sshxmlrpc.py probe-response: EmulabServer * xmlrpc/sshxmlrpc_server.py.in: Set the value returned by a "probe" to the name of the invoked module. This way, the other side can figure out who they are talking to (e.g. EmulabServer vs. experiment vs. fs vs. osid). * event/sched/event-sched.c, event/sched/rpc.cc, event/sched/rpc.h, xmlrpc/script_wrapper.py.in: Multiple paths (e.g. xmlrpc, $prefix/sbin/sshxmlrpc_server.py) are now probed before giving up. Force the use of the user's default identity and protocol one. For event-sched, a single connection is now made at startup and dropped before going into the event loop. * event/sched/GNUmakefile.in: Add a dependency for the install target and add -I$(OBJDIR) to the CXXFLAGS. * install/ports/ulsshxmlrpcpp/Makefile, install/ports/ulsshxmlrpcpp/distinfo, install/ports/ulsshxmlrpcpp/pkg-descr: Bump version number to 1.1 and tweak the description. * config.h.in, configure, configure.in: Add a "#define TBROOT" that has the install prefix.
-
- 24 Sep, 2004 1 commit
-
-
Leigh B. Stoller authored
building RPC version of scheduler.
-
- 30 Aug, 2004 1 commit
-
-
Leigh B. Stoller authored
* The per-experiment event scheduler now runs on ops instead of boss. Boss still runs elvind and uses events internally, but the user part of the event system has moved. * Part of the guts of eventsys_control moved to new script, eventsys.proxy, which runs on ops and fires off the event scheduler. The only tricky part of this is that the scheduler runs as the user, but killing it has to be done as root since a different person might swap out the experiment. So, the proxy is a perl wrapper invoked from a root ssh from boss, which forks, writes the pid file into /var/run/emulab/evsched/$pid_$eid.pid, then flips to the user and execs the event scheduler (which is careful not to fork). Obviously, if the kill is done as root, the pid file has to be stored someplace the user is not allowed to write. * The event scheduler has been rewritten to use Tim's C++ interface to the sshxmlrpc server on boss. Actually, I reorg'ed the scheduler so that it can be built either as a mysql client, or as RPC client. Note that it can also be built to use the SSL version of the XMLRPC server, but that will not go live until I finish the server stuff up. Also some goo for dealing with building the scheduler with C++. * Changes to several makefiles to install the ops binaries over NFS to /usr/testbed/opsdir. Makes life easier, but only if boss and ops are running the same OS. For now, using static linking on the event scheduler until ops upgraded to same rev as boss. * All of the event clients got little tweaks for dealing with the new CNAME for the event system server (event-sever). Will need to build new images at some point. Old images and clients will continue to work cause of an inetd hack on boss that uses netcat to transparently redirect elvind connections to ops. * Note that eventdebug needs some explaining. In order to make the inetd redirect work, elvind cannot be listening on the standard port. So, the boss event system uses an alternate port since there are just a few subsystems on boss that use the server, and its easy to propogate changes on boss. Anyway, the default for eventdebug is to connect to the standard port on localhost, which means it will work as expected on ops, but will require -b argument on boss. * Linktest changes were slightly more involved. No longer run linktest on boss when called from the experiment swapin path, but ssh over to ops to fire it off. This is done as the user of course, and there are some tricks to make it possible to kill a running linktest and its ssh when experiment swapin is canceled (or from the command line) by forcing allocation of a tty. I will probably revisit this at some point, but I did not want to spend a bunch of time on linktest. * The upgrade path detailed in doc/UPDATING is necessarily complicated and bound to cause consternation at remote sites doing an upgrade.
-
- 05 Aug, 2004 1 commit
-
-
Leigh B. Stoller authored
-
- 15 Jul, 2004 1 commit
-
-
Leigh B. Stoller authored
set g1 [new EventGroup $ns] $g1 add $link0 $link1 $ns at 60.0 "$g1 down" See the new advanced tutorial section on event groups for a better example. Changed tbreport to dump the event groups table when in summary mode. At the same time, I changed tbreport to use the recently added virt_lans:vnode and ip slots, decprecating virt_nodes:ips in one more place. I also changed the web interface to always dump the event and event group summaries. The parser gets a new file (event.tcl), and the "at" method deals with event group events by expanding them inline into individual events sent to each member. For some agents, this is unavoidable; traffic generators get the initial params in the event, so it is not possible to send a single event to all members of the group. Same goes for program objects, although program objects do default to the initial command now, at least on new images. Changed the event scheduler to load the event groups table. The current operation is that the scheduler expands events sent to a group, into a set of distinct events sent to each member of the group. At some point we proably want to optimize this by telling the agents (running on the nodes) what groups they are members of. Other News: Added a "mustdelay" slot to the virt_lans table so the parser can tell assign_wrapper that a link needs to be delayed, say if there are events or if the link is red/gred. Previously, assign_wrapper tried to figure this out by looking at the event list, etc. I have removed that code; see database-migrate for instructions on how to initialize this slot in existing experiments. assign_wrapper is free to ignore or insert delays anyway, but having the parser do this makes more sense. I also made some "rename" changes to the parser wrt queues and lans and links. Not really necessary, but I got sidetracked (for several hours!) trying to understand that rename stuff a little better, and now I do.
-
- 16 Jun, 2004 1 commit
-
-
Shashi Guruprasad authored
takes a while to finish. Without this, later NSESWAP events from other pnodes were being ignored since the event scheduler was blocked for a long time.
-
- 09 Jan, 2004 1 commit
-
-
Shashi Guruprasad authored
(or more than one simhost) is unable to keep up with real-time. It includes changes to assign_wrapper to handle swap modify for simnodes, the simple algorithm in nseswap that bumps up the nodeweight of simnodes being hosted on a simhost that reports "can't keep up with real-time" (aka nse violation), ptopgen and sim.tcl to prefer nodes that already have the FBSD-NSE image. Also, changes to other files to send out NSESWAP event. One unrelated change: We now have per-swapin .top files and assign.log files along with .ptop files. This helps in debugging across multiple swapins since files remain in the form of <pid>-<eid>-<process_id>.{top,ptop} and assign-<pid>-<eid>-<process_id>.log Also useful for archiving.
-
- 15 Dec, 2003 1 commit
-
-
Shashi Guruprasad authored
now mapped to more than one PC if required. The simnode_capacity column in the node_types table determines how many sim nodes can be packed on one PC. The packing factor can also be controlled via tb-set-colocate-factor to be smaller than simnode_capacity. - No frontend code changes. To summarize: $ns make-simulated { ... } is still the easy way to put a whole bunch of Tcl code to be in simulation. One unrelated fix in the frontend code is to fix the xmlencode() function which prior to this would knock off newlines from columns in the XML output. This affected nseconfigs since it is one of the few columns with embedded newlines. Also changed the event type and event object type in traffic.tcl from TRAFGEN/MODIFY to NSE/NSEEVENT. - More Tcl code in a new directory tbsetup/nseparse -> Runs on ops similar to the main parser. This is invoked from assign_wrapper in the end if there are simnodes -> Partitions the Tcl code into multiple Tcl specifications and updates the nseconfigs table via xmlconvert -> Comes with a lot of caveats. Arbitrary Tcl code such as user specified objects or procedures will not be re-generated. For example, if a user wanted a procedure to be included in Tcl code for all partitions, there is no way for code in nseparse to do that. Besides that, it needs to be tested more thoroughly. - xmlconvert has a new option -s. When invoked with this option, the experiments table is not allowed to be modified. Also, virtual tables are just updated (as opposed to deleting all rows in the first invocation before inserting new rows) - nse.patch has all the IP address related changes committed in iversion 1.11 + 2 other changes. 1) MTU discovery support in the ICMP agent 2) "$ns rlink" mechanism for sim node to real node links - nseinput.tcl includes several client side changes to add IP routes in NSE and the kernel routing table for packets crossing pnodes. Also made the parsing of tmcc command output more robust to new changes. Other client side changes in libsetup.pm and other scripts to run nse, are also in this commit - Besides the expected changes in assign_wrapper for simulated nodes, the interfaces and veth_interfaces tables are updated with routing table identifiers (rtabid). The tmcd changes are already committed. This field is used only by sim hosts on the client side. Of course, they can be used by jails as well if desired.
-
- 18 Nov, 2003 1 commit
-
-
Leigh B. Stoller authored
* Make the NS file an optional argument to swapexp modify; when not given the prerun phase is skipped. Instead, go directly to tbswap (run assign, etc). * Add NSESWAP event so that Shashi can fire off the above modify using tevc from an experimental node. tevc -e pid/eid now ns nseswap * Change event scheduler to react to above event, and fire off: nseswap pid eid as the user. The script should do its thing, and *exec* swapexp with the proper args as quickly as possible (so that the event scheduler is not hung up for too long. The script is invoked as the user, since the event scheduler is running as the user.
-
- 05 Nov, 2003 1 commit
-
-
Leigh B. Stoller authored
is to add HMACs to events to ensure they that events cannot be injected into an experiment by an unauthorized client. * The frontend now generates a secret key for each experiment and stores that into a file and in the DB. * Each of the event clients, as well as the event producers (scheduler, tevc) have a new -k option to specify the name of the file. Two new event library functions were added for clients to give the key: event_handle_t event_register_withkeyfile(char *name, int threaded, char *keyfile); event_handle_t event_register_withkeydata(char *name, int threaded, unsigned char *keydata, int keylen); * When the library is in possesion of a key, it will generate an HMAC and attach it to outgoing notifications. A client receiving a notification will compute an HMAC and compare it against the HMAC in the notification. If they do not compare, the notification is dropped with a warning message printed (the client callback never gets the notification). If the client has not provided a key, then the HMAC in the incoming notification is ignored. * The scheduler also takes a -k option, and will compute HMACs for all of the static events ahead of time. That keeps it off the critical path. * The tevc client also takes a -k option. However, tevc will always try to find the keyfile (default path) so that it can attach the HMAC to dynamic events before sending them to the scheduler (which will check to make sure it matches). The scheduler will not accept dynamic events without unless the HMAC is present and matches. * I have rebuilt the elvin librarys, removing all of the X goop and the SSL goop. Smaller binaries. So, I had to add -lcrypto to all of the client makefiles to that programs link. * The program-agent got a few more changes. The command string is no longer passed inside the event; it comes in when the program agent is started, via a config file generated from tmcd data. This gets rid of our mostly insecure remote execution facility.
-
- 01 Aug, 2003 1 commit
-
-
Mike Hibler authored
-
- 01 May, 2003 2 commits
-
-
Leigh B. Stoller authored
-
Leigh B. Stoller authored
in your NS file: $ns at 2000.0 "$ns halt" or $ns at 2000.0 "$ns swapout" The first causes the experiment to terminate, the later causes it to swap out. I know some wiseass is going to ask for a swapin event! You can also send these events from tevc: tevc -e testbed/stopme now ns halt or tevc -e testbed/stopme now ns swapout Does it need to be said that this is insecure? That we could get swap wars going on as people try to get nodes for their experiments by swapping out someone else? Well, if that happens we will apply the big hammer and squash their nuts. Details: I added an SIMULATOR "agent", and HALT/SWAPOUT event types in the usual places. In the event scheduler, SIMULATOR events are treated specially (not actually sent anywhere), but handled internally. Very convenient, cause the scheduler runs as the person who swapped the experiment in, and so I just run either swapexp or endexp, right from the scheduler. At some point we need to give the permission issue some thought.
-
- 15 Apr, 2003 1 commit
-
-
Leigh B. Stoller authored
is sent anyway!
-
- 28 Feb, 2003 1 commit
-
-
Leigh B. Stoller authored
(okay, a "*") in which case it means to not insert a specific node_id into the event, but rather leave it to the subscribers to specify what they need (in the case of the delay agent pid/eid/lan/lan-vnode. The new assign_wrapper inserts these entries like this. Old stuff will continue to work of course.
-
- 12 Sep, 2002 1 commit
-
-
Mike Hibler authored
-
- 10 Jul, 2002 1 commit
-
-
Leigh B. Stoller authored
-
- 07 Jun, 2002 1 commit
-
-
Leigh B. Stoller authored
Shashi just went by. I bumped the number and added a check for too many to avoid the core dump. Need a watchdog for this, but I had to churn another process just for that.
-
- 23 May, 2002 1 commit
-
-
Leigh B. Stoller authored
-
- 06 May, 2002 2 commits
-
-
Leigh B. Stoller authored
-
Leigh B. Stoller authored
events up (including TIME STARTS) by 5 seconds after ISUP is sent. Lets see if we can track this down. Also, schedule TIME STARTS like all other events to see if there is some oddity there.
-
- 23 Apr, 2002 1 commit
-
-
Leigh B. Stoller authored
interupt the current next up event cause Ian's code just grabbed it off the queue and went into select. I converted this code to use a condition variable and a timed wait. If a new event comes in, signal the waiter who can recheck to see of the head of the queue has changed. Seems to work, but not well tested. This bug reported by Rob!
-
- 22 Mar, 2002 1 commit
-
-
Leigh B. Stoller authored
provides a mapping from an object ($cbr0) to the node on which the agent is running ($nodeA). It also includes the type of agent (TRAFGEN, LINK, etc). There were a number of reasons for adding this table: * To avoid a series of specialized table lookups in the event scheduler to map from a name (link0) to the node on which the agent is running. Previously, it was looking the delays table and the virt_trafgens table. Well, now it just needs to look at this one table and store the mapping internally. When a dynamic event comes in, we can figure out where to send it easily. * For NSE traffic generation. Unlike the simple TG based CBRs, Shashi wants to be able to send events to any of the objects in the config (udp0, telnet0, ftp0, etc). Well, the virt_trafgens table certainly does not store that info, and it would have been painful to work this into it. For every agent/application, just add an entry in the virt_agents table and the scheduler knows where to send the events. * It nicely supports the new program object; just plug an entry in the virt_agents table. Okay, there is one messy aspect; delays nodes! Delay nodes are not computed until after assign wrapper runs, so in addition to munging the static event list in assign_wrapper, we now munge the virt_agents table as well. Not much to do about this; delay nodes are handled outside the normal path everywhere.
-
- 18 Mar, 2002 1 commit
-
-
Leigh B. Stoller authored
1. The tevc client can run on either a client node or on users. The command line syntax is like this: Usage: ./tevc [-s server] [-c] event ./tevc [-s server] -e pid/eid time objname event [args ...] time: 'now' or '+seconds' or [[[[yy]mm]dd]HH]MMss Examples: ./tevc -e pid/eid now cbr0 set interval_=0.2 ./tevc -e pid/eid +10 cbr0 start ./tevc -e pid/eid +20 cbr0 stop The -s arg defaults to BOSSNODE when not given. Only root can send TBCONTROL events (-c), but that part of tevc is probably going to be killed off when we convert to sending TBCONTROL via tmcc/tmcd (Rob is working on that). The -e option is required for dynamic events, and is not defaulted yet. 2. There is no real checking of arguments. The event is sent over to the scheduler, which tries to map it into an agent running on a node. If the map fails (say, no such trafgen, or no delay node on that link), or if the event makes no sense for that agent, the event fails and the user never hears about it. The solution for this is a back channel so that the scheduler can generate an error condition that the user sees. 3. To facilitate better checking, I think we need to change the DB tables so that there is a mapping between the type of agent (object) and the kinds of events it can take. This would replace the flat event_eventtypes table. The event_scheduler could load this table at init time so that it can do a quick check on dynamic events when they arrive and return an error when we support error values. 4. The scheduler initialization phase tries to determine what agents are valid for an experiment (thats where you can send events) so that when a user sends an event to cbr3, the event scheduler can determine what/where that is. My method for determining this is totally ad-hoc right now; read the virt_trafgens and delays table. These are the only two types of configurable agents we support. This is rather bogus! I think assign_wrapper or some other script in the front end needs to collect this data into a single table for the scheduler to read. Not sure yet; needs more thought. Anyway, I build a mapping table that can be searched when a dynamic event comes in; this avoids a DB table lookup in the critical path.
-
- 06 Mar, 2002 1 commit
-
-
Leigh B. Stoller authored
the nodes are up and that events are starting. The objtype is "TIME" (TBDB_OBJECTTYPE_TIME from tbdefs.h) and the eventtype is "START" (TBDB_EVENTTYPE_START from tbdefs.h). How to subscribe to this event will be forthcoming.
-
- 05 Mar, 2002 1 commit
-
-
Leigh B. Stoller authored
export that stuff. Add signal handlers to ensure that INT/TERM/HUP signals are caught and that we exit cleanly (clearing the pid from the DB). Minor rework for DB table structure and the switch from per-experiment event tables to a single event table indexed by pid,eid.
-
- 26 Feb, 2002 2 commits
-
-
Leigh B. Stoller authored
-
Leigh B. Stoller authored
-
- 25 Feb, 2002 1 commit
-
-
Leigh B. Stoller authored
-
- 21 Feb, 2002 1 commit
-
-
Leigh B. Stoller authored
scheme that we discussed in email. Notifications and subscriptions now take an "address_tuple" argument (I know, crappy name) that is a structure that looks like this: char *site; /* Which Emulab site. God only */ char *expt; /* Project and experiment IDs */ char *group; /* User defined group of nodes */ char *host; /* A specific host */ char *objtype; /* LINK, TRAFGEN, etc ... */ char *objname; /* link0, cbr0, cbr1, etc ... */ char *eventtype; /* START, STOP, UP, DOWN, etc ... */ These can be a specific value, ADDRESSTUPLE_ANY if you are a subscriber, or ADDRESSTUPLE_ALL if you are a producer. The reason for the distinction is that you can optimize the match expression with the extra bit of information, and the above structure can make for a fairly lengthy match expression, which takes more time of course. You should use address_tuple_alloc() and address_tuple_free() rather than allocating them yourself. Note that host above is actually the ipaddr of control interface. This turns out to be more convenient since free nodes do not have virtual names. Also added a new tbgen directly. This directory includes 3 programs in the making: tbmevd: Is the Testbed Master Event Daemon, to be run on boss and will handle TBCONTROL events (reboot, reload, etc). It is just a shell of a program right now, that takes the events but does not do anything useful with them. Have not defined what the events are, and what DB state will be modified. tbmevc: Is the Testbed Master Event Client (akin to tmcc). It generates TBCONTROL events which the tbmevd will pick up and do something useful with. This program is intended to be wrapped by a perl script that will ask the tmcd for the name of the boss (running the event daemon). sample-client: This is a little client to demonstrate how to connect to the event system and use the address tuple to subscribe to events, and then how to get information out of notifications. Note that I have not created a proper build environment yet, so new programs should probably go in the event dir for now, and link using the same approach as in tbgen/GNUmakefile.in.
-
- 19 Feb, 2002 2 commits
-
-
Leigh B. Stoller authored
Also several changes for building on FreeBSD. I've left the older Makefiles in place so Ian can continue to build in his environmant (Linux?).
-
Ian Murdock authored
-