Tmcdcommands
Description of TMCD Commands
reboot
deprecated, now a no-op
nodeid
Returns the emulab node id (not the experimental name).
status
Returns one line specifying whether the node is free or allocated to an experiment. If allocated, gives the project and experiment IDs and the node nickname (experimental name).
ifconfig
FIXME FIXME FIXME
Returns network interface information, one line per interface
for physical interfaces: interface type, ipv4 address, ipv4 netmask, mac, speed, duplex if IXP interface, also specify so and return RTABID and lan
returns interface settings in key-value format
for veth interfaces returns type, mac, speed, duplex FIXME
for physical interfaces underlying delay interfaces FIXME
accounts
Returns user account information, group information, SSH public keys, and SFS host IDs If the requesting node is remote and did not make the accounts request using an SSL-encrypted connection, an error is returned.
User account information:
- username
- user id
- primary group id
- crypted password
- full name (GECOS)
- email address
- aux groups
- user should or should not have root access
- account serial number
- SSH public keys (only on Windows or protogeni nodes)
- SFS keys
Returns group information:
- group name
- group id
The account serial number is compared with the previous serial number for that account. If they differ, account info has changed and node should update it.
delay
returns delay node information; FIXME
DELAY INT0=\%s INT1=\%s
PIPE0=\%s DELAY0=\%s BW0=\%s PLR0=\%s
PIPE1=\%s DELAY1=\%s BW1=\%s PLR1=\%s
LINKNAME=\%s
RED0=\%s RED1=\%s
LIMIT0=\%s MAXTHRESH0=\%s MINTHRESH0=\%s WEIGHT0=\%s
LINTERM0=\%s QINBYTES0=\%s BYTES0=\%s
MEANPSIZE0=\%s WAIT0=\%s SETBIT0=\%s
DROPTAIL0=\%s GENTLE0=\%s
LIMIT1=\%s MAXTHRESH1=\%s MINTHRESH1=\%s WEIGHT1=\%s
LINTERM1=\%s QINBYTES1=\%s BYTES1=\%s
MEANPSIZE1=\%s WAIT1=\%s SETBIT1=\%s
DROPTAIL1=\%s GENTLE1=\%s
VNODE0=\%s VNODE1=\%s
NOSHAPING=\%s,
linkdelay
returns link delay info for the given node; each record looks like below, one record per line. a node may have multiple records.
LINKDELAY IFACE=\%s TYPE=\%s
LINKNAME=\%s VNODE=\%s INET=\%s MASK=\%s
PIPE=\%s DELAY=\%s BW=\%s PLR=\%s
RPIPE=\%s RDELAY=\%s RBW=\%s RPLR=\%s
RED=\%s LIMIT=\%s MAXTHRESH=\%s
MINTHRESH=\%s WEIGHT=\%s
LINTERM=\%s QINBYTES=\%s BYTES=\%s
MEANPSIZE=\%s WAIT=\%s SETBIT=\%s
DROPTAIL=\%s GENTLE=\%s,
FIXME
hosts
Return list of hosts in the experiment:
- hostname
- IP address
- aliases (short names)
Also returns boss node information for plab nodes if there are other hosts that would be returned.
rpms
Returns a list of RPM packages to be installed on the node
deltas
Deprecated, returns nothing
tarballs
Returns a list of tarballs to be unpacked on the node and the directory to which each tarball should be extracted.
startcmd
Returns a command the node should execute once it has finished booting, as well as the UID that should run the command.
startstat
Used to pass the return status of the start command back to TMCD.
ready
Sending this request tells TMCD the node is ready (booting has finished).
readycount
Returns the number of nodes in the experiment that are ready and the total number of nodes.
mounts
returns NFS mounts for the nodes in this experiment returned format is REMOTE=server:export LOCAL=mountpoint
jailed nodes (phys or virt) do not get mounts. also true of geni nodes fails if !usesfs and node is remote
if USESFS=1 passed in by client; then
local nodes get the following
/*
- Return SFS-based mounts. Locally, we send back per
- project/group mounts (really symlinks) cause thats the local
- convention. For remote nodes, no point. Just send back
- mounts for the top level directories. */
remote nodes get slightly different mounts in /netbed
/proj
/groups
/users
pointer to per-project scratch directory if compiled with FSSCRATCHDIR
/share if compiled with FSSHAREDIR
else
returns project mount
returns scratch mount if defined
returns share mount if defined
if pid != gid, then expt. is group expt, so return a mount for
the group directory too.
fi
if remote nodes or geni nodes; stop here
return any mounts for aux projects.
- Now a list of user directories. These include the members of the
- experiments projects, plus all the members of all of the projects that
- have been granted access to share the nodes in that expt.
if compiled with ISOLATEADMINS, don't return mounts for admins' user directories unless the swapper was an admin
sfshostid
returns 0 if sfs not in use
extracts nodehostid from client creates symlinks /sfs/NODEHOSTID -> PROJDIR/DOTSFS/nickname.eid.pid
loadinfo
Returns the information about the image to be loaded on the node:
- Image (path, address, or URL)
- Partition number (1\-4)
- Partition type
- Disk device name (FreeBSD)
- Whether or not ACPI should be enabled
- Whether or not ASF should be enabled
- Whether or not the disk should be wiped
- MBR version
reset
Forces stated to reset any next\_pxe\_boot\_* and next\_boot\_* fields. No output is returned to the client.
routing
Return routing info for each route
- source IP
- destination IP
- type (host or network)
- mask
- gateway
- cost
trafgens
Returns trafgens info
TRAFGEN=\%s MYNAME=\%s MYPORT=\%s PEERNAME=\%s PEERPORT=\%s PROTO=\%s ROLE=\%s GENERATOR=\%s,
nseconfigs
Returns nseconfigs info. Raw data is pulled from db and returned to client as-is. This request is not allowed via UDP.
state
Client passes in new node state, TMCD passes this on to stated to update the node's state machine.
creator
Returns the username of the experiment creator.
tunnels
Returns list of tunnels: FIXME
- Tunnel
- Member
- Key
- Value
vnodelist
Returns vnode list for a wide-area node:
- Node ID of virtual node
- Whether or not the virtual node is jailed
subnodelist
Return list of subnodes and their types for requesting physical node.
isalive
Client sends this request to notify TMCD that it is alive. TMCD sends a response that indicates whether the client should update its account data.
ipodinfo
Returns ping-of-death authentication info for the node:
- Host IP address from which to accept ipod packets
- Netmask to apply to the sender of ipod packets to match against the IP address.
- Hash used to authenticate ipod packet
Returns an error to client if ipod info is requested via UDP.
ntpinfo
Returns list of NTP hosts and whether each is a peer or a server. Also returns the node's last reported NTP drift.
ntpdrift
Client sends NTP drift. Nothing is returned to client.
jailconfig
Return configuration for a jailed node. FIXME
- IP address and netmask for jail
- SSH server port
- Range of ports used by this jail
- Whether or not System V IPC is allowed
- Whether or not sending raw packets is allowed
- Whether or not access to /dev/mem is allowed (true if local)
- BPFRO=1
- INADDRANY=1
- IPDIVERT=1
- ROUTING=1 if local node, 0 otherwise
- FQDN of the event server
- Per-node-type vnode disk size (if specified)
- List of IP interfaces jailed node has access to
Geni nodes only receive the FQDN of the event server.
plabconfig
Returns sshd port, svcslice, ip address, elvind port
subconfig
Returns subnode configuration. calls doixpconfig or dorelayconfig if type is ixp-bv or mica2 respectively
Returns error if node isn't a subnode
ixpconfig
returns ixp config info, one value per line IXP\_IP IXP\_IFACE IXP\_BCAST IXP\_HOSTNAME HOST\_IP HOST\_IFACE NETMASK
slothdparams
get slothd params (one line). returned value is currently hardcoded into tmcd.
progagents
Returns a list of agents to run. Agents are defined by the following parameters:
- Agent name
- Working directory
- Expected exit code
- Time to wait for agent to exit
- Command to run
The UID of the experiment swapper is also returned. Agents must run as this UID.
syncserver
return syncserver info
SYNCSERVER SERVER='\%s.\%s.\%s.\%s' ISSERVER=\%d
reqp->syncserver,
reqp->eid, reqp->pid, OURDOMAIN,
(strcmp(reqp->syncserver, reqp->nickname) ? 0 : 1));
keyhash
Returns keyhash info. Remote nodes issuing this request will get an error if not using an SSL-encrypted connection.
eventkey
Returns eventkey info
fullconfig
Return all configuration data for requesting node. The data returned depends on node type (physical or virtual) and the purpose of the node in the experiment (delay node, experimental node, etc).
All nodes will receive the configuration data for each of the following TMCD commands.
- nodeid
- ifconfig
- accounts
- delay
- linkdelay
- rpms
- tarballs
- startupcmd
- mounts
- routing
- trafgens
- nseconfigs
- creator
- tunnels
- programs
- syncserver
- keyhash
- eventkey
- watchdoginfo
- firewallinfo
- userenv
- tiptunnels
- traceinfo
- motelog
Physical nodes will also receive this data:
- vnodelist
- subnodelist
- ipodinfo
- ntpinfo
- sdparams
- routelist
- role
Virtual nodes will also get this data:
- jailconfig
- plabconfig
routelist
Return info for each route for all virtual nodes mapped to the requesting physical node
- virtual node
- router type
- source IP
- destination IP
- route type (host or network)
- mask
- gateway
- cost
role
return the role of the node
rusage
Client sends the load average for the last 1, 5, and 15 minutes plus the amount of disk space currently used. The server returns a value indicating whether or not account data needs to be updated.
If the requesting node is a planetlab node, the up/down data is stored in a file on the server.
doginfo
Returns time intervals to use in the watchdog process:
- How often to check for new intervals
- How often to report isalive info
- How often to report NTP drift values
- How often to check for software updates
- How often up report resource usage
- How often to update the root password
hostkeys
Client sends SSH host keys. Supported formats are SSHv1, SSHv2 RSA and SSHv2 DSA.
tmcctest
hack to test timeouts and anomolous situations for tmcc FIXME
fwinfo
Returns firewall information for the node.
If requesting node is not a firewall:
- Firewall type
- 'none' if no firewall is present
- 'remote' if requesting node is not firewall
- Firewall IP if requesting node is not a firewall (or 0.0.0.0 if firewall is hardware-enforced)
If requesting node is a firewall:
- Firewall type
- Style
- Internal network interface
- External network interface
- Internal VLAN
- External VLAN
- Firewall rule logging FIXME
- Firewall variables in key=value format
- User-defined rules
- Default rules
- List of firewalled hosts
- IP address on control network
- MAC address of interface on control network
- Hostname
hostinfo
Client sends info about itself to store in the database. Currently, this only supports the version of the boot CD for CD-booted systems. Expects CD version as a string no longer than 31 characters from the set [a-zA-Z0-9-].
emulabconfig
return config for an inner emulab FIXME
eplabconfig
return config for an inner planetlab FIXME
localize
Returns the SSH public key for the root user on boss.
rootpswd
Returns a random password for root user in crypted format. Generates the password the first time it's called. Remote nodes must be using an SSL-encrypted connection.
booterrno
Client sends error code to indicate boot failure. Nothing returned to client.
bootlog
Client sends bootlog. Nothing returned to client.
battery
Client sends battery capacity and voltage, both floats. Nothing returned to client.
topomap
Returns gzipped topomap; used if NFS fails.
userenv
Returns list of user environment variables in name=value format.
tiptunnels
Return tip tunnels for the node: FIXME
- vnode
- server
- port
- keylen
- key
relayconfig
Returns servername-port number mappings for tip servers: FIXME
- Type
- Server
- Port
traceconfig
FIXME
ltmap
Returns gzipped ltmap; used if NFS fails.
ltpmap
Returns gzipped ltpmap; used if NFS fails.
elvindport
Client sends elvind port. Nothing returned to client.
plabeventkeys
Returns all event keys on plab node to service slice. FIXME
- Project ID
- Experiment ID
- Key
intfcmap
Returns a map of all PC nodes to their MAC addresses.
motelog
Return motelog info for this node: FIXME
- MOTELOGID
- CLASSFILE
- SPECFILE
portregister
client specifies service and port to register, stored in db
if client specifies only service, look up port and return port and nodeid to client Remote nodes must be using an SSL-encrypted connection.
bootwhat
Returns bootinfo information
- Boot method
- PART (local partition or MBR)
- SYSID (local partition by partition type)
- MFS (load MFS from network)
- Optional commandline to pass to OS bootloader or kernel