Commit a44e3236 authored by Gary Wong's avatar Gary Wong

Add PhantomNet manual.

parent d60c56f6
Pipeline #345 failed with stage
apt-manual/ apt-manual/
cloudlab-manual/ cloudlab-manual/
phantomnet-manual/
compiled/ compiled/
pdf/ pdf/
*.bak *.bak
......
...@@ -4,8 +4,10 @@ ...@@ -4,8 +4,10 @@
TOPLEVEL=apt-manual TOPLEVEL=apt-manual
INSTALL_DEV=boss.emulab.net:/usr/testbed/devel/ricci/apt-manual INSTALL_DEV=boss.emulab.net:/usr/testbed/devel/ricci/apt-manual
INSTALL_CLAB_DEV=boss.emulab.net:/usr/testbed/devel/ricci/www/cloudlab-manual INSTALL_CLAB_DEV=boss.emulab.net:/usr/testbed/devel/ricci/www/cloudlab-manual
INSTALL_PNET_DEV=boss.emulab.net:/usr/testbed/devel/ricci/www/phantomnet-manual
INSTALL_LIVE=ops.emulab.net:/usr/testbed/aptdocs/ INSTALL_LIVE=ops.emulab.net:/usr/testbed/aptdocs/
INSTALL_CLAB=ops.emulab.net:/usr/testbed/cloudlabdocs/ INSTALL_CLAB=ops.emulab.net:/usr/testbed/cloudlabdocs/
INSTALL_PNET=ops.emulab.net:/usr/testbed/phantomnetdocs/
SCRIBBLEFILES=$(wildcard *.scrbl) SCRIBBLEFILES=$(wildcard *.scrbl)
SCREENSHOTFILES=$(wildcard screenshots/*) SCREENSHOTFILES=$(wildcard screenshots/*)
...@@ -13,29 +15,36 @@ DEFSFILE=defs.rkt ...@@ -13,29 +15,36 @@ DEFSFILE=defs.rkt
SOURCES=$(SCRIBBLEFILES) $(SCREENSHOTFILES) $(DEFSFILE) SOURCES=$(SCRIBBLEFILES) $(SCREENSHOTFILES) $(DEFSFILE)
all: both all: each
pdf: pdf/apt-manual.pdf pdf/cloudlab-manual.pdf pdf: pdf/apt-manual.pdf pdf/cloudlab-manual.pdf pdf/phantomnet-manual.pdf
apt: $(SOURCES) apt: $(SOURCES)
scribble --htmls ++style apt-manual.css $(TOPLEVEL).scrbl scribble --htmls ++style apt-manual.css $(TOPLEVEL).scrbl
cloudlab: $(SOURCES)
scribble --htmls ++style cloudlab-manual.css ++arg clab cloudlab-manual.scrbl
phantomnet: $(SOURCES)
scribble --htmls ++style phantomnet-manual.css ++arg pnet phantomnet-manual.scrbl
pdf/apt-manual.pdf: $(SOURCES) pdf/apt-manual.pdf: $(SOURCES)
scribble --dest pdf/ --pdf ++arg pdf $(TOPLEVEL).scrbl scribble --dest pdf/ --pdf ++arg pdf $(TOPLEVEL).scrbl
pdf/cloudlab-manual.pdf: $(SOURCES) pdf/cloudlab-manual.pdf: $(SOURCES)
scribble --dest pdf/ --pdf ++arg clab ++arg pdf cloudlab-manual.scrbl scribble --dest pdf/ --pdf ++arg clab ++arg pdf cloudlab-manual.scrbl
cloudlab: $(SOURCES) pdf/phantomnet-manual.pdf: $(SOURCES)
scribble --htmls ++style cloudlab-manual.css ++arg clab cloudlab-manual.scrbl scribble --dest pdf/ --pdf ++arg pnet ++arg pdf phantomnet-manual.scrbl
both: apt cloudlab each: apt cloudlab phantomnet
.PHONY: apt cloudlab all both clean install-dev install-live .PHONY: apt cloudlab phantomnet all each clean install-dev install-live
clean: clean:
-rm -rf $(TOPLEVEL)/ -rm -rf $(TOPLEVEL)/
-rm -rf cloudlab-manual/ -rm -rf cloudlab-manual/
-rm -rf phantomnet-manual/
-rm -rf pdf/* -rm -rf pdf/*
-rm *.bak -rm *.bak
-rm *.tex -rm *.tex
...@@ -50,6 +59,9 @@ install-dev: apt ...@@ -50,6 +59,9 @@ install-dev: apt
install-cloudlab-dev: cloudlab install-cloudlab-dev: cloudlab
rsync -v -az -e ssh --delete cloudlab-manual/ $(INSTALL_CLAB_DEV) rsync -v -az -e ssh --delete cloudlab-manual/ $(INSTALL_CLAB_DEV)
install-phantomnet-dev: phantomnet
rsync -v -az -e ssh --delete phantomnet-manual/ $(INSTALL_PNET_DEV)
install-live: apt pdf/apt-manual.pdf install-live: apt pdf/apt-manual.pdf
-rsync -v -az -e ssh --delete apt-manual/ $(INSTALL_LIVE) -rsync -v -az -e ssh --delete apt-manual/ $(INSTALL_LIVE)
scp pdf/apt-manual.pdf $(INSTALL_LIVE)/manual.pdf scp pdf/apt-manual.pdf $(INSTALL_LIVE)/manual.pdf
...@@ -57,3 +69,7 @@ install-live: apt pdf/apt-manual.pdf ...@@ -57,3 +69,7 @@ install-live: apt pdf/apt-manual.pdf
install-cloudlab: cloudlab pdf/cloudlab-manual.pdf install-cloudlab: cloudlab pdf/cloudlab-manual.pdf
-rsync -v -az -e ssh --delete cloudlab-manual/ $(INSTALL_CLAB) -rsync -v -az -e ssh --delete cloudlab-manual/ $(INSTALL_CLAB)
scp pdf/cloudlab-manual.pdf $(INSTALL_CLAB)/manual.pdf scp pdf/cloudlab-manual.pdf $(INSTALL_CLAB)/manual.pdf
install-phantomnet: phantomnet pdf/phantomnet-manual.pdf
-rsync -v -az -e ssh --delete phantomnet-manual/ $(INSTALL_PNET)
scp pdf/phantomnet-manual.pdf $(INSTALL_PNET)/manual.pdf
# Apt / CloudLab Documentation # Apt / CloudLab Documentation
This repository contains the documentation for multiple testbed This repository contains the documentation for multiple testbed
environments---currently [Apt](https://aptlab.net) and environments---currently [Apt](https://aptlab.net),
[CloudLab](https://cloudlab.us). The two have similar user interfaces and [CloudLab](https://cloudlab.us), and [PhantomNet](https://phantomnet.org).
concepts, so both share much documentation in common. The three have similar user interfaces and
concepts, so each share much documentation in common.
---------- ----------
...@@ -43,7 +44,13 @@ To build CloudLab HTML pages only: ...@@ -43,7 +44,13 @@ To build CloudLab HTML pages only:
make cloudlab make cloudlab
``` ```
To build PDFs for both testbeds: (warning: can be quite slow) To build PhantomNet HTML pages only:
```
make phantomnet
```
To build PDFs for all testbeds: (warning: can be quite slow)
``` ```
make pdf make pdf
...@@ -51,8 +58,9 @@ To build PDFs for both testbeds: (warning: can be quite slow) ...@@ -51,8 +58,9 @@ To build PDFs for both testbeds: (warning: can be quite slow)
### Viewing ### Viewing
Simply open `apt-manual/index.html` or `cloudlab-manual/index.html` in your Simply open `apt-manual/index.html`, `cloudlab-manual/index.html`,
browser. PDFs are placed in the `pdf/` subdirectory. or `phantomnet-manual/index.html` in your browser. PDFs are placed
in the `pdf/` subdirectory.
---------- ----------
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
] ]
@italic[(if (equal? doc-mode 'pdf) @italic[(if (equal? doc-mode 'pdf)
(list "The HTML version of this manual is availble at " (hyperlink apt-doc-url apt-doc-url)) (list "The HTML version of this manual is available at " (hyperlink apt-doc-url apt-doc-url))
(list "This manual is also available as a " (hyperlink "http://docs.aptlab.net/manual.pdf" "PDF")))] (list "This manual is also available as a " (hyperlink "http://docs.aptlab.net/manual.pdf" "PDF")))]
......
...@@ -12,13 +12,17 @@ ...@@ -12,13 +12,17 @@
(provide (all-defined-out)) (provide (all-defined-out))
; Check to see if we are building Apt or CloudLab documentation ; Check to see if we are building Apt or CloudLab documentation
(define tb-mode (define tb-mode
(if (vector-member "clab" (current-command-line-arguments)) (cond
'clab ((vector-member "clab" (current-command-line-arguments))
'apt)) 'clab)
((vector-member "pnet" (current-command-line-arguments))
'pnet)
(else 'apt)))
(define (apt?) (if (equal? tb-mode 'apt) #t #f)) (define (apt?) (if (equal? tb-mode 'apt) #t #f))
(define (clab?) (if (equal? tb-mode 'clab) #t #f)) (define (clab?) (if (equal? tb-mode 'clab) #t #f))
(define (pnet?) (if (equal? tb-mode 'pnet) #t #f))
; Check to see if we are building for web or PDF; there is probably some ; Check to see if we are building for web or PDF; there is probably some
; nicer way to do this by inspecting the scribble/run state directly, but ; nicer way to do this by inspecting the scribble/run state directly, but
...@@ -28,15 +32,17 @@ ...@@ -28,15 +32,17 @@
'pdf 'pdf
'html)) 'html))
(define (apt-vs-clab #:apt [apt-version (list)] #:clab [clab-version (list)]) (define (apt-vs-clab #:apt [apt-version (list)] #:clab [clab-version (list)] #:pnet [pnet-version (list)])
(if (apt?) (case tb-mode
apt-version ('apt apt-version)
clab-version)) ('clab clab-version)
('pnet pnet-version)))
(define (apt-vs-clab* #:apt [apt-version ""] #:clab [clab-version ""]) (define (apt-vs-clab* #:apt [apt-version ""] #:clab [clab-version ""] #:pnet [pnet-version ""])
(decode-flow (list (if (apt?) (decode-flow (list (case tb-mode
apt-version ('apt apt-version)
clab-version)))) ('clab clab-version)
('pnet pnet-version)))))
(define (apt-only . stuff) (define (apt-only . stuff)
(apt-vs-clab #:apt stuff)) (apt-vs-clab #:apt stuff))
...@@ -44,22 +50,31 @@ ...@@ -44,22 +50,31 @@
(define (clab-only . stuff) (define (clab-only . stuff)
(apt-vs-clab #:clab stuff)) (apt-vs-clab #:clab stuff))
(define (pnet-only . stuff)
(apt-vs-clab #:pnet stuff))
(define apt-base-url (define apt-base-url
(if (clab?) (case tb-mode
"https://www.cloudlab.us/" ('apt "https://www.aptlab.net/")
"https://www.aptlab.net/")) ('clab "https://www.cloudlab.us/")
('pnet "https://www.phantomnet.org/")))
(define apt-doc-url (define apt-doc-url
(if (clab?) (case tb-mode
"http://docs.cloudlab.us/" ('apt "http://docs.aptlab.net/")
"http://docs.aptlab.net/")) ('clab "http://docs.cloudlab.us/")
('pnet "http://docs.phantomnet.org/")))
(define forum-url
(if (apt?) (define forum-url
"https://groups.google.com/forum/#!forum/apt-users" (case tb-mode
"https://groups.google.com/forum/#!forum/cloudlab-users")) ('apt "https://groups.google.com/forum/#!forum/apt-users")
('clab "https://groups.google.com/forum/#!forum/cloudlab-users")
(define tb (lambda () (if (clab?) "CloudLab" "Apt"))) ('pnet "https://groups.google.com/forum/#!forum/phantomnet-users")))
(define tb (lambda () (case tb-mode
('apt "Apt")
('clab "CloudLab")
('pnet "PhantomNet"))))
; We want the 'version' to be the date of the most recent commit ; We want the 'version' to be the date of the most recent commit
(define apt-version (define apt-version
...@@ -89,11 +104,17 @@ ...@@ -89,11 +104,17 @@
(define (screenshot path) (define (screenshot path)
(let* ([aptpath (string-append "screenshots/apt/" path)] (let* ([aptpath (string-append "screenshots/apt/" path)]
[clabpath (string-append "screenshots/clab/" path)] [clabpath (string-append "screenshots/clab/" path)]
[fullpath (if (apt?) [pnetpath (string-append "screenshots/pnet/" path)]
aptpath [fullpath (case tb-mode
(if (file-exists? clabpath) ('apt aptpath)
clabpath ('clab
(cdr (cons (displayln (string-append "WARNING: CloudLab missing screenshot " path)) aptpath))))] (if (file-exists? clabpath)
clabpath
(cdr (cons (displayln (string-append "WARNING: CloudLab missing screenshot " path)) aptpath))))
('pnet
(if (file-exists? pnetpath)
pnetpath
(cdr (cons (displayln (string-append "WARNING: PhantomNet missing screenshot " path)) aptpath)))))]
[b (make-object bitmap% fullpath)] [b (make-object bitmap% fullpath)]
[width (send b get-width)] [width (send b get-width)]
[scale-factor (* 1.0 (/ screenshot-width width))]) [scale-factor (* 1.0 (/ screenshot-width width))])
......
...@@ -97,8 +97,8 @@ Start by pointing your browser at @url[(apturl)]. ...@@ -97,8 +97,8 @@ Start by pointing your browser at @url[(apturl)].
What's going on behind the scenes is that on one (or more) of the machines What's going on behind the scenes is that on one (or more) of the machines
in one of the @seclink["hardware"]{@(tb) clusters}, a disk is being imaged, in one of the @seclink["hardware"]{@(tb) clusters}, a disk is being imaged,
a @apt-vs-clab[#:apt "VM created and booted" #:clab "set of physical machines a @apt-vs-clab[#:apt "VM created and booted" #:clab "set of physical machines
booted"], accounts created for you, etc. This process usually takes a couple booted" #:pnet "VM created and booted"], accounts created for you, etc.
of minutes. This process usually takes a couple of minutes.
@apt-only{If you have never used this email address with @(tb) before (or if @apt-only{If you have never used this email address with @(tb) before (or if
you switch computers or browsers), @(tb) will send a verification email. you switch computers or browsers), @(tb) will send a verification email.
......
/*
* Overrides some of Scribble's default stying to match PhantomNet's colors
*/
@import url(http://fonts.googleapis.com/css?family=Roboto+Slab:300,400,700);
@import url(http://fonts.googleapis.com/css?family=Roboto:400,400italic,700,700italic,300,300italic);
.navsettop, .navsetbottom, .tocset {
background-color: #c00;
color: white;
}
.navsettop, .navsetbottom, .tocset td a {
color: white;
}
.tocset td a.tocviewselflink {
color: inherit;
font-weight: bolder;
}
.navsettop a, .navsetbottom a {
color: inherit;
}
.navsettop .nonavigation, .navsetbottom .nonavigation {
color: #bbb;
}
.navsettop a:hover, .navsetbottom a:hover {
background: #7f3300;
}
.tocviewsublist, .tocviewsublistonly, .tocviewsublisttop, .tocviewsublistbottom {
border-left: 1px solid #bbb;
}
.refcolumn {
background: #adc4cc;
border-color: #0099cc;
}
/*
* Override some of the default fonts
*/
body, .main {
font-family: 'Roboto', sans-serif;
font-weight: lighter;
}
h1, h2, h3, h4, h5, h6 {
font-family: 'Roboto Slab', serif;
}
.SAuthorListBox {
font-family: 'Roboto Slab', serif;
font-weight: lighter;
}
.tocset td, .navsettop, .navsetbottom {
font-family: 'Roboto', sans-serif;
}
#lang scribble/manual
@(require racket/date)
@(require "defs.rkt")
@title[#:version apt-version
#:date (date->string (current-date))]{The PhantomNet Manual}
@author[
"Jacobus (Kobus) Van der Merwe" "Robert Ricci" "Leigh Stoller" "Kirk Webb" "Jon Duerig" "Gary Wong" "Keith Downie" "Mike Hibler" "Eric Eide"
]
@italic[(if (equal? doc-mode 'pdf)
(list "The HTML version of this manual is available at " (hyperlink apt-doc-url apt-doc-url))
(list "This manual is also available as a " (hyperlink "http://docs.phantomnet.org/manual.pdf" "PDF")))]
PhantomNet is a mobility testbed, providing researchers with a set of
hardware and software resources that they can use to develop, debug,
and evaluate their mobility designs. Resources available in PhantomNet
include EPC/EPS software (OpenEPC), hardware access points (ip.access
enodeb), PC nodes with mobile radios (HUAWEI cellular modems), and a
large set of commodity bare metal nodes, virtual nodes and other
resouces inherited from the main Emulab site. In addition to raw
resources, PhantomNet provides configuration directives and scripts to
assist researchers in setting up their mobility experiments. Users
specify their experiment via Emulab NS file templates augmented with
PhantomNet-specific functionality. In complement to these template NS
files, PhantomNet does the work of configuring the EPC software
components to operate within the underlying Emulab environment.
The PhantomNet facility is built on top of
@hyperlink["http://www.emulab.net/"]{Emulab} and is run by the
@hyperlink["http://www.flux.utah.edu"]{Flux Research Group}, part of the
@hyperlink["http://www.cs.utah.edu/"]{School of Computing} at the
@hyperlink["http://www.utah.edu/"]{University of Utah}.
@table-of-contents[]
@include-section["getting-started.scrbl"]
@include-section["users.scrbl"]
@include-section["repeatable-research.scrbl"]
@include-section["creating-profiles.scrbl"]
@include-section["basic-concepts.scrbl"]
@include-section["advanced-topics.scrbl"]
@include-section["hardware.scrbl"]
@include-section["planned.scrbl"]
@include-section["getting-help.scrbl"]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment