All new accounts created on Gitlab now require administrator approval. If you invite any collaborators, please let Flux staff know so they can approve the accounts.

Commit ff01ba54 authored by Russ Fish's avatar Russ Fish

hyperviewer application program

parent d736629e
0 clan 1 lan
1 CN-4 1 host
2 llan-4 1 lan
3 LN-119 1 host
3 LN-118 1 host
3 LN-115 1 host
3 LN-114 1 host
3 LN-117 1 host
3 LN-116 1 host
3 LN-111 1 host
3 LN-110 1 host
3 LN-113 1 host
3 LN-112 1 host
3 LN-106 1 host
3 LN-107 1 host
3 LN-122 1 host
3 LN-123 1 host
3 LN-108 1 host
3 LN-109 1 host
3 LN-120 1 host
3 LN-121 1 host
3 LN-104 1 host
3 LN-105 1 host
3 LN-102 1 host
3 LN-103 1 host
3 LN-100 1 host
3 LN-101 1 host
3 LN-124 1 host
1 CN-15 1 host
2 llan-15 1 lan
3 LN-393 1 host
3 LN-392 1 host
3 LN-391 1 host
3 LN-390 1 host
3 LN-379 1 host
3 LN-378 1 host
3 LN-395 1 host
3 LN-394 1 host
3 LN-375 1 host
3 LN-399 1 host
3 LN-376 1 host
3 LN-397 1 host
3 LN-396 1 host
3 LN-377 1 host
3 LN-384 1 host
3 LN-385 1 host
3 LN-386 1 host
3 LN-387 1 host
3 LN-380 1 host
3 LN-381 1 host
3 LN-382 1 host
3 LN-383 1 host
3 LN-388 1 host
3 LN-389 1 host
3 LN-398 1 host
1 CN-10 1 host
2 llan-10 1 lan
3 LN-274 1 host
3 LN-270 1 host
3 LN-271 1 host
3 LN-272 1 host
3 LN-273 1 host
3 LN-258 1 host
3 LN-259 1 host
3 LN-252 1 host
3 LN-253 1 host
3 LN-250 1 host
3 LN-251 1 host
3 LN-256 1 host
3 LN-257 1 host
3 LN-254 1 host
3 LN-255 1 host
3 LN-263 1 host
3 LN-262 1 host
3 LN-261 1 host
3 LN-260 1 host
3 LN-267 1 host
3 LN-266 1 host
3 LN-265 1 host
3 LN-264 1 host
3 LN-269 1 host
3 LN-268 1 host
1 CN-0 1 host
2 llan-0 1 lan
3 LN-9 1 host
3 LN-8 1 host
3 LN-5 1 host
3 LN-4 1 host
3 LN-7 1 host
3 LN-6 1 host
3 LN-1 1 host
3 LN-0 1 host
3 LN-3 1 host
3 LN-2 1 host
3 LN-19 1 host
3 LN-18 1 host
3 LN-15 1 host
3 LN-14 1 host
3 LN-17 1 host
3 LN-16 1 host
3 LN-11 1 host
3 LN-10 1 host
3 LN-13 1 host
3 LN-12 1 host
3 LN-24 1 host
3 LN-20 1 host
3 LN-21 1 host
3 LN-22 1 host
3 LN-23 1 host
1 CN-6 1 host
2 llan-6 1 lan
3 LN-168 1 host
3 LN-169 1 host
3 LN-164 1 host
3 LN-165 1 host
3 LN-166 1 host
3 LN-167 1 host
3 LN-160 1 host
3 LN-161 1 host
3 LN-162 1 host
3 LN-163 1 host
3 LN-173 1 host
3 LN-158 1 host
3 LN-151 1 host
3 LN-150 1 host
3 LN-153 1 host
3 LN-152 1 host
3 LN-155 1 host
3 LN-154 1 host
3 LN-157 1 host
3 LN-156 1 host
3 LN-159 1 host
3 LN-172 1 host
3 LN-171 1 host
3 LN-170 1 host
3 LN-174 1 host
1 CN-1 1 host
2 llan-1 1 lan
3 LN-39 1 host
3 LN-38 1 host
3 LN-33 1 host
3 LN-32 1 host
3 LN-31 1 host
3 LN-30 1 host
3 LN-37 1 host
3 LN-36 1 host
3 LN-35 1 host
3 LN-34 1 host
3 LN-42 1 host
3 LN-25 1 host
3 LN-40 1 host
3 LN-27 1 host
3 LN-46 1 host
3 LN-47 1 host
3 LN-44 1 host
3 LN-45 1 host
3 LN-48 1 host
3 LN-49 1 host
3 LN-28 1 host
3 LN-29 1 host
3 LN-43 1 host
3 LN-26 1 host
3 LN-41 1 host
1 CN-3 1 host
2 llan-3 1 lan
3 LN-79 1 host
3 LN-78 1 host
3 LN-77 1 host
3 LN-76 1 host
3 LN-75 1 host
3 LN-95 1 host
3 LN-94 1 host
3 LN-97 1 host
3 LN-96 1 host
3 LN-91 1 host
3 LN-90 1 host
3 LN-93 1 host
3 LN-92 1 host
3 LN-99 1 host
3 LN-98 1 host
3 LN-86 1 host
3 LN-87 1 host
3 LN-84 1 host
3 LN-85 1 host
3 LN-82 1 host
3 LN-83 1 host
3 LN-80 1 host
3 LN-81 1 host
3 LN-88 1 host
3 LN-89 1 host
1 CN-17 1 host
2 llan-17 1 lan
3 LN-429 1 host
3 LN-428 1 host
3 LN-449 1 host
3 LN-448 1 host
3 LN-447 1 host
3 LN-446 1 host
3 LN-445 1 host
3 LN-444 1 host
3 LN-425 1 host
3 LN-442 1 host
3 LN-441 1 host
3 LN-426 1 host
3 LN-438 1 host
3 LN-439 1 host
3 LN-443 1 host
3 LN-432 1 host
3 LN-433 1 host
3 LN-430 1 host
3 LN-431 1 host
3 LN-436 1 host
3 LN-437 1 host
3 LN-434 1 host
3 LN-435 1 host
3 LN-427 1 host
3 LN-440 1 host
1 CN-8 1 host
2 llan-8 1 lan
3 LN-205 1 host
3 LN-204 1 host
3 LN-207 1 host
3 LN-206 1 host
3 LN-201 1 host
3 LN-200 1 host
3 LN-203 1 host
3 LN-202 1 host
3 LN-224 1 host
3 LN-223 1 host
3 LN-208 1 host
3 LN-221 1 host
3 LN-220 1 host
3 LN-216 1 host
3 LN-217 1 host
3 LN-214 1 host
3 LN-215 1 host
3 LN-212 1 host
3 LN-213 1 host
3 LN-210 1 host
3 LN-211 1 host
3 LN-209 1 host
3 LN-218 1 host
3 LN-219 1 host
3 LN-222 1 host
1 CN-9 1 host
2 llan-9 1 lan
3 LN-249 1 host
3 LN-248 1 host
3 LN-229 1 host
3 LN-228 1 host
3 LN-227 1 host
3 LN-226 1 host
3 LN-243 1 host
3 LN-242 1 host
3 LN-245 1 host
3 LN-244 1 host
3 LN-247 1 host
3 LN-246 1 host
3 LN-241 1 host
3 LN-240 1 host
3 LN-225 1 host
3 LN-230 1 host
3 LN-231 1 host
3 LN-232 1 host
3 LN-233 1 host
3 LN-234 1 host
3 LN-235 1 host
3 LN-236 1 host
3 LN-237 1 host
3 LN-238 1 host
3 LN-239 1 host
1 CN-18 1 host
2 llan-18 1 lan
3 LN-465 1 host
3 LN-464 1 host
3 LN-467 1 host
3 LN-466 1 host
3 LN-461 1 host
3 LN-460 1 host
3 LN-463 1 host
3 LN-462 1 host
3 LN-469 1 host
3 LN-452 1 host
3 LN-472 1 host
3 LN-473 1 host
3 LN-456 1 host
3 LN-457 1 host
3 LN-450 1 host
3 LN-451 1 host
3 LN-474 1 host
3 LN-453 1 host
3 LN-454 1 host
3 LN-455 1 host
3 LN-470 1 host
3 LN-471 1 host
3 LN-458 1 host
3 LN-459 1 host
3 LN-468 1 host
1 CN-19 1 host
2 llan-19 1 lan
3 LN-498 1 host
3 LN-499 1 host
3 LN-494 1 host
3 LN-495 1 host
3 LN-496 1 host
3 LN-497 1 host
3 LN-490 1 host
3 LN-491 1 host
3 LN-492 1 host
3 LN-493 1 host
3 LN-476 1 host
3 LN-477 1 host
3 LN-475 1 host
3 LN-478 1 host
3 LN-479 1 host
3 LN-489 1 host
3 LN-488 1 host
3 LN-483 1 host
3 LN-482 1 host
3 LN-481 1 host
3 LN-480 1 host
3 LN-487 1 host
3 LN-486 1 host
3 LN-485 1 host
3 LN-484 1 host
1 CN-16 1 host
2 llan-16 1 lan
3 LN-421 1 host
3 LN-420 1 host
3 LN-423 1 host
3 LN-422 1 host
3 LN-424 1 host
3 LN-414 1 host
3 LN-415 1 host
3 LN-416 1 host
3 LN-417 1 host
3 LN-410 1 host
3 LN-411 1 host
3 LN-412 1 host
3 LN-413 1 host
3 LN-418 1 host
3 LN-419 1 host
3 LN-403 1 host
3 LN-402 1 host
3 LN-401 1 host
3 LN-400 1 host
3 LN-407 1 host
3 LN-406 1 host
3 LN-405 1 host
3 LN-404 1 host
3 LN-409 1 host
3 LN-408 1 host
1 CN-5 1 host
2 llan-5 1 lan
3 LN-142 1 host
3 LN-143 1 host
3 LN-140 1 host
3 LN-141 1 host
3 LN-146 1 host
3 LN-147 1 host
3 LN-144 1 host
3 LN-145 1 host
3 LN-148 1 host
3 LN-149 1 host
3 LN-128 1 host
3 LN-129 1 host
3 LN-125 1 host
3 LN-126 1 host
3 LN-127 1 host
3 LN-137 1 host
3 LN-136 1 host
3 LN-135 1 host
3 LN-134 1 host
3 LN-133 1 host
3 LN-132 1 host
3 LN-131 1 host
3 LN-130 1 host
3 LN-139 1 host
3 LN-138 1 host
1 CN-14 1 host
2 llan-14 1 lan
3 LN-374 1 host
3 LN-371 1 host
3 LN-370 1 host
3 LN-373 1 host
3 LN-372 1 host
3 LN-368 1 host
3 LN-369 1 host
3 LN-366 1 host
3 LN-367 1 host
3 LN-364 1 host
3 LN-365 1 host
3 LN-362 1 host
3 LN-363 1 host
3 LN-360 1 host
3 LN-361 1 host
3 LN-357 1 host
3 LN-356 1 host
3 LN-355 1 host
3 LN-354 1 host
3 LN-353 1 host
3 LN-352 1 host
3 LN-351 1 host
3 LN-350 1 host
3 LN-359 1 host
3 LN-358 1 host
1 CN-7 1 host
2 llan-7 1 lan
3 LN-195 1 host
3 LN-194 1 host
3 LN-197 1 host
3 LN-196 1 host
3 LN-191 1 host
3 LN-190 1 host
3 LN-193 1 host
3 LN-192 1 host
3 LN-199 1 host
3 LN-198 1 host
3 LN-186 1 host
3 LN-187 1 host
3 LN-184 1 host
3 LN-185 1 host
3 LN-182 1 host
3 LN-183 1 host
3 LN-180 1 host
3 LN-181 1 host
3 LN-188 1 host
3 LN-189 1 host
3 LN-179 1 host
3 LN-178 1 host
3 LN-177 1 host
3 LN-176 1 host
3 LN-175 1 host
1 CN-12 1 host
2 llan-12 1 lan
3 LN-322 1 host
3 LN-323 1 host
3 LN-320 1 host
3 LN-321 1 host
3 LN-308 1 host
3 LN-309 1 host
3 LN-324 1 host
3 LN-304 1 host
3 LN-305 1 host
3 LN-306 1 host
3 LN-307 1 host
3 LN-301 1 host
3 LN-302 1 host
3 LN-303 1 host
3 LN-300 1 host
3 LN-319 1 host
3 LN-318 1 host
3 LN-313 1 host
3 LN-312 1 host
3 LN-311 1 host
3 LN-310 1 host
3 LN-317 1 host
3 LN-316 1 host
3 LN-315 1 host
3 LN-314 1 host
1 CN-13 1 host
2 llan-13 1 lan
3 LN-326 1 host
3 LN-327 1 host
3 LN-325 1 host
3 LN-328 1 host
3 LN-329 1 host
3 LN-348 1 host
3 LN-349 1 host
3 LN-340 1 host
3 LN-341 1 host
3 LN-342 1 host
3 LN-343 1 host
3 LN-344 1 host
3 LN-345 1 host
3 LN-346 1 host
3 LN-347 1 host
3 LN-331 1 host
3 LN-330 1 host
3 LN-333 1 host
3 LN-332 1 host
3 LN-335 1 host
3 LN-334 1 host
3 LN-337 1 host
3 LN-336 1 host
3 LN-339 1 host
3 LN-338 1 host
1 CN-2 1 host
2 llan-2 1 lan
3 LN-51 1 host
3 LN-50 1 host
3 LN-53 1 host
3 LN-52 1 host
3 LN-55 1 host
3 LN-54 1 host
3 LN-57 1 host
3 LN-56 1 host
3 LN-59 1 host
3 LN-58 1 host
3 LN-74 1 host
3 LN-73 1 host
3 LN-72 1 host
3 LN-70 1 host
3 LN-71 1 host
3 LN-68 1 host
3 LN-69 1 host
3 LN-60 1 host
3 LN-61 1 host
3 LN-62 1 host
3 LN-63 1 host
3 LN-64 1 host
3 LN-65 1 host
3 LN-66 1 host
3 LN-67 1 host
1 CN-11 1 host
2 llan-11 1 lan
3 LN-275 1 host
3 LN-291 1 host
3 LN-276 1 host
3 LN-277 1 host
3 LN-298 1 host
3 LN-299 1 host
3 LN-296 1 host
3 LN-297 1 host
3 LN-294 1 host
3 LN-295 1 host
3 LN-292 1 host
3 LN-293 1 host
3 LN-290 1 host
3 LN-278 1 host
3 LN-279 1 host
3 LN-289 1 host
3 LN-288 1 host
3 LN-285 1 host
3 LN-284 1 host
3 LN-287 1 host
3 LN-286 1 host
3 LN-281 1 host
3 LN-280 1 host
3 LN-283 1 host
3 LN-282 1 host
# Makefile for the hyperviewer application directory. See ROADMAP for details.
# Tamara Munzner's Stanford HyperViewer code is in a subdirectory under here.
HVROOT = hypviewer
HVINC = ${HVROOT}/include
HVSRC = ${HVROOT}/src
# The follosing matches Munzner's Makefile scheme.
CPU = free
##CPU = linux
WINSYS = glut
##WINSYS = xt
ARCH = ${CPU}${WINSYS}
LIBRARY = hypviewer
HVLIBDIR = ${HVSRC}/${ARCH}
HVLIBNAME = ${LIBRARY}${ARCH}
HVLIB = ${HVLIBDIR}/lib${HVLIBNAME}.a
CFLAGS = -DHYPGLUT -DHYPFREE -DGL_GLEXT_LEGACY -g -DNAMESPACEHACK=
INCDIRS = -I${HVINC} -I/usr/X11R6/include -I/usr/local/include/python2.3
LDLIBS = ${HVLIB} -L/usr/X11R6/lib -lGLU -lGL -lXmu -lXext -lX11 -lm
# Distribute the Python scripts, shared library, and sample input files.
PYFILES = hypview.py exptToHv.py sshxmlrpc.py emulabclient.py hvFrameUI.py hv.py
DISTFILES = ${PYFILES} _hv.so BigLan.hyp ts600.hyp
# Finally, make something.
default: _hv.so
# The input for SWIG is in a .i file. Add stuff to the interface class .h file.
# How come %apply doesn't work for std::string in hv.mod? Workaround with sed instead.
hv.i: hv.mod ${HVINC}/HypView.h
sed -e 's/const string & [a-z][a-z]*/const std::string \& INPUT/g' \
${HVINC}/HypView.h | cat hv.mod - > hv.i
# Create the wrappers using SWIG.
hvmain.o: hvmain.cpp
g++ -fpic -c ${CFLAGS} ${INCDIRS} hvmain.cpp
_hv.cpp hv.py: hv.i
swig -c++ -python -DHYPGLUT -DHYPFREE -module hv -o _hv.cpp hv.i
# Put the wrappers in a shared library for import by hv.py .
_hv.o: _hv.cpp
g++ -fpic -c ${CFLAGS} ${INCDIRS} _hv.cpp
_hv.so: hvmain.o _hv.o ${HVLIB}
gcc -shared hvmain.o _hv.o ${LDLIBS} -o _hv.so
hvlib: ${HVLIB}
${HVLIB}:
@echo ""
@echo Make sure that Makefile.${ARCH} is included, and not commented-out.
grep Makefile.${ARCH} ${HVROOT}/Makefile.main
@echo ""
@echo Making ${HVLIB}
cd ${HVROOT}; make
dist:
# Wrap a top-level hyperviewer directory around the dist files in the tarball.
mkdir -p temp/hyperviewer
cp -p ${DISTFILES} temp/hyperviewer
tar cvfz hyperviewer.tgz -C temp hyperviewer
rm -r temp
clean:
rm *.o *.so
cd ${HVROOT}; make clean
\ No newline at end of file
ROADMAP for hyperviewer
Here's a sketch of the component architecture.
GUI *1 <- - - -> Client methods *2 <- - ssh to xmlrpc
wxGlade SWIG/HyperViewer *3 < Experiment topology from DB
wxPython | ssh to portstats/slothd
SWIG/wxWidgets | < Dynamic link/node info
wxGLCanvas |
X/OpenGL <- - - - - '
Files, by area in the diagram above:
*1 - Control panel GUI, created and modified graphically in the wxGlade designer.
hvgui.wxg - XML saved form of the GUI. Edit with wxGlade in this directory.
hvFrameUI.py - Generated by clicking "Generate code" on the properties page
of the top-level Application object.
*2 - Python client methods to glue everything together, read experiments from the database
and drive the SWIG'ed HyperViewer API.
hvApp.py - Application classes including hvframe, initialization and event bindings.
exptToHv.py - Get experiment topology via XML-RPC, write a HyperViewer .hyp file.
sshxmlrpc.py, emulabclient.py - Copied here for use by exptToHv.py .
(There must be a better way to package these files from testbed/xmlrpc.)
*3 - SWIG'ed HypView class which encapsulates the API to the HyperViewer library.
hvmain.cpp - Top level HyperViewer code, based on hypviewer/examples/*/main.cpp .
hv.mod - SWIG code appended to make hv.i, below.
hv.i - Input for SWIG, made from hypviewer/include/HypView.h + hv.mod .
hv.py - Python wrappers, generated by SWIG from hv.i, imported by hvApp.py .
_hv.cpp - C++ wrappers, generated by SWIG from hv.i .
_hv.so - Shared library, linked with libhyperviewer.a, imported by hv.py .
hypviewer - Tamara Munzner's HyperViewer library from Stanford.
(See http://graphics.stanford.edu/~munzner/software.html)
To compile, do "make clean", then "make".
. Makefile.main - This chooses which version is made, including Makefile.freeglut .
. Makefile.freeglut - The Makefile for FreeBSD with the GLUT library.
A proper SWIG binding needs to be ifdeff'ed in. Meanwhile this app is based
on the FreeBSD GLUT library API with all of the GLUT code ifdeffed out,
hence compile flags -DPyHack -DFONTHACK -DHYPGLUT -DHYPFREE.
. doc - HTML API documentation, see HypView.html .
. include - C++ Header files.
. src - C++ Library sources.
- src/freeglut - Where the .o files and libhypviewerfreeglut.a library are built.
. examples - C++ Test programs.
- examples/glut/freeglut/gluttest - Currently broken due to the -DPyHack ifdeffing.
Choose Makefile.freext in Makefile.main to get the following:
- examples/xtsimple/freext/xtsimple ../BigLan.hyp - Simple user interface.
- examples/vkxt/freext/vktest ../BigLan.hyp - UI with _many_ keystroke commands.
See /hypviewer/examples/vkxt/viewer.README for a description.
Choose Makefile.linuxxt in Makefile.main for Linux versions.
================================================================
Package dependencies:
. wxGlade-0.3.1_1 GUI builder for wxPython/wxWindows written in Python
wxgtk-common-2.4.2_1 The wxWidgets GUI toolkit (common files)
wxgtk2-2.4.2_3 The wxWidgets GUI toolkit (GTK2 version)
py23-wxPython-2.4.2.4_2 Python bindings for the wxWidgets/GTK GUI toolkit