Skip to content

Commit

Permalink
fix links, restructure parts of instructor guide
Browse files Browse the repository at this point in the history
  • Loading branch information
mfthomps committed Dec 12, 2020
1 parent aa0e7cb commit 2e230ce
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 66 deletions.
Binary file modified docs/development/development.pdf
Binary file not shown.
22 changes: 10 additions & 12 deletions docs/development/development.tex
Original file line number Diff line number Diff line change
Expand Up @@ -467,20 +467,16 @@ \subsection{Merging}
Revert to premaster in case of merge issues or other failures using {\tt revert\_premaster.sh}.

\subsection{Publish new release}
Before publishing a new release, one more round of testing is required to ensure the framwork properly pulls from the remote regisry.
\begin{itemize}
\item Merge premaster into master
\item Created tar files with mkall
\item Run smoke tests, the test vm scripts will set the branch to {\tt master}, which should cause them to pull from DockerHub.
\item Copy labtainer.tar and labtainer-developer.tar to Liferay.
\item Publish Liferay to live
\item Push premaster registry to DockerHub: {\tt refresh\_mirror.py}
\end{itemize}
The steps for merging premaster into master and creating a new distrubtion are captured in the {\tt distrib/mergePre.sh} script.
Labtainer releases are managed as GitHub releases, using git tags and the {\tt github\_release} tool.

Note there is no synchronization scheme to coordinate between the publishing of tar files and updating the
DockerHub. In some cases, there may be a window in which a Labtainer installation gets a distribution that names
a lab that is not yet on DockerHub.
\begin{verbatim}
git tag <new>
git push
git push --tags
\end{verbatim}

Use the {\tt mkrelease.sh} script to create the release files within GitHub.

\subsection{Continuous integration with Jenkins}
A Jenkins pipeline automates periodic testing of {\tt premaster} branch of Labtainers. The pipeline script is backed up in
Expand Down Expand Up @@ -568,6 +564,8 @@ \subsection{Todo}

Add latex template and makefile when new\_lab\_setup is run.

Collect bash history from all users.

\subsubsection{Docker problems}
The check\_nets.py tests for problems that sometimes crop up in Docker. These include Linux routes defined
on the host for container networks that no longer exist. And, loopback devices that are not properly deleted?
Expand Down
Binary file modified docs/instructor/labtainer-instructor.pdf
Binary file not shown.
66 changes: 35 additions & 31 deletions docs/instructor/labtainer-instructor.tex
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@
computers interconnected via virtual networks. Refer to our published
papers at \url{https://my.nps.edu/web/c3o/labtainers} for additional information
on the use of Labtainers. And see the \underline{Lab Designer User Guide}"
at \url{https://my.nps.edu/documents/107523844/109121513/labdesigner.pdf} for
at \url{https://github.com/mfthomps/Labtainers/raw/master/docs/labdesigner/labdesigner.pdf}
information on creating and maintaining Labtainer exercises.

The easiest way to get Labtainers is to use our pre-built VM available at the Labtainer
Expand All @@ -50,7 +50,10 @@
Running Labtainers on servers, e.g., cloud deployments is discussed in
section \ref{servers}

\subsection{Assigning a Lab}
\section{Assigning Labs}
Available labs are summerized and organized into broad categories at \url{https://nps.edu/web/c3o/labtainer-lab-summary1}.
Pior to assigning a lab, become familiar with it by reviewing the lab and its manual.

Student instructions for using Labtainers are in the \underline{Labtainer Student Guide}.
Students work from the {\tt labtainer-student} directory, i.e.,
\begin{verbatim}
Expand All @@ -65,7 +68,7 @@ \subsection{Assigning a Lab}
the resulting virtual terminals. You can interact with the resulting computers just as a
student would.

\subsection{Assessing a Lab}
\section{Assessing Lab Performance}
When the student stops a lab, i.e., using {\tt stoplab}, Labtainers creates a zip file of
student artifacts (including lab reports) and then displays the path to this zip file to
the student. The easiest way for the student to forward this zip file to you is by starting
Expand Down Expand Up @@ -94,17 +97,17 @@ \subsection{Assessing a Lab}
\end{verbatim}
\noindent A table of lab results with one row per student and
a column for each goal will be displayed. A description of the goals follows the table.
A web-based display of that data is available as described in section \ref{web}.
A web-based display of that data is available as described in subsection \ref{review-artifacts}.

Note that not all labs include automated assessment. For those labs, you will see this
message:
\begin{verbatim}
No automated assessment for this lab
\end{verbatim}
\noindent Even when no automated assessment is performed, you can still observe student performance
artifacts, e.g., the {\tt .bash\_history} file as described below in \ref{review-artifacts}.
artifacts, e.g., the {\tt .bash\_history} file and files created by the student as described below in \ref{review-artifacts}.

Use the {\tt -r} option to get perform a fresh grading, e.g., if you've removed files from the {\tt labtainer\_xfer} directory.
Use the {\tt -r} option to perform a fresh grading, e.g., if you've removed files from the {\tt labtainer\_xfer} directory.
Sometimes zip files within the {\tt labtainer\_xfer} directory are corrupted. If error messages indicate a bad zip file,
try removing it from the directory and then use the {\tt -r} option to perform a fresh grading.
Use the {\tt -u } option to update your gradelab to the latest image.
Expand All @@ -120,8 +123,31 @@ \subsection{Assessing a Lab}
\end{verbatim}
\noindent which also includes reports separately uploaded into the LMS.

\subsubsection{Review artifact details}
\subsection{Review lab artifacts}
\label{review-artifacts}
An early release of a web-based tool for viewing details of student assessment
results and student artifacts is available by use of the {\tt -w} flag with the {\tt gradelab} command. That causes
the grader container to listen on port 8008 of the Labtainer VM. You can then open
a browser on that VM and go to {\tt localhost:8008}. Alternately, use your host machine's browser
by setting port forwarding on your VM, (e.g., in VirtualBox, use Machine / Settings / Network / Advanced /
Port Forwarding to set host IP 127.0.0.1:8008 to map to guest IP 0.0.0.0:8008).

The table of goals displayed in the browser includes links to details of artifacts
created by the student when performing the lab. For example, clicking on the student name displays a table
of all timestamped result artifacts. That page includes a \textbf{History} heading with links to the
{\tt .bash\_history} files one each container. And it includes a table with links to files in the student home diretory
and links to result files, e.g., stdout from selected commands issued by the student.

Links within each goal table cell lead to pages whose content depends on the type of goals defined. For example,
a goal whose value is defined by a boolean expression will lead to a table of all boolean values for each timestamp
for which results are present.

Definitions of different goal types and result types can be found in the \textit{Lab Designer Guide}. Note that you need
not understand all of the displayed data in order to gain useful insight into student progress. Some of the displayed information
requires an understanding of the Labtainers automated assessment configuration directives, and is made available in the displays
primarily in support of those developing automated assessment for labs.

\subsubsection{Artifacts on the grader container}
You can view all student results, including their original artifacts by using the {\tt -d} flag
with the {\tt gradelab} command. This results in a virtual terminal connected to a grading
container that contains all student artifacts and results. If you have not first run the
Expand All @@ -141,31 +167,9 @@ \subsubsection{Review artifact details}
files. You can create additional virtual terminals into the grading container by reissuing
the gradelab command with the {\tt -a} flag. When you are finished, or wish to stop working, type:
\begin{verbatim}
stopgrade
stoplab
\end{verbatim}

\subsubsection{Web-base view of student assessment}
\label{web}
An early release of a web-based tool for viewing details of student assessment
is available by use of the {\tt -w} flag with the {\tt gradelab} command. That causes
the grader container to listen on port 8008 of the Labtainer VM. You can then open
a browser on that VM and go to {\tt localhost:8008}. Alternately, to use your host machines browser,
you can set port forwarding on your VM, (e.g., in VirtualBox, use Machine / Settings / Network / Advanced /
Port Forwarding to set host IP 127.0.0.1:8008 to map to guest ip 0.0.0.0:8008).

The table of goals displayed in the browser includes links that allow you to view details of artifacts
created by the student when performing the lab. For example, clicking on the student name displays a table
of all timestamped result artifacts. That page alow includes a \textbf{History} heading with links to the
{\tt .bash\_history} files one each container.

Links within each goal table cell lead to pages whose content depends on the type of goals defined. For example,
a goal whose value is defined by a boolean expression will lead to a table of all boolean values for each timestamp
for which results are present.

Definitions of different goal types and result types can be found in the \textit{Lab Designer Guide}. Note that you need
not understand all of the displayed data in order to gain useful insight into student progress. Some of the displayed information
requires an understanding of the Labtainers automated assessment configuration directives, and is made available in the displays
primarily in support of those developing automated assessment for labs.

\section{Managing Labtainer Installations and Updates}
Any given Labtainers installation can be brought up to date to the latest version by using the
Expand Down Expand Up @@ -227,7 +231,7 @@ \subsection{Deploying on servers}

\section{Customizing Labtainers}
Creating new labs and modifying existing labs is described in the \textit{Labtainers Lab Designer User Guide}.
\url{https://nps.box.com/shared/static/12n0y4yue49xcxtpv0jybgqiiskx8pr6.pdf}
\url{https://github.com/mfthomps/Labtainers/raw/master/docs/labdesigner/labdesigner.pdf}

That guide also describes how to provide your students with custom versions of the lab manuals, and how to
publish new labs so that they can be incorporated into your student's Labtainers instances, and shared
Expand Down
Binary file modified docs/labdesigner/labdesigner.pdf
Binary file not shown.
25 changes: 3 additions & 22 deletions docs/labdesigner/labdesigner.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2058,30 +2058,11 @@ \subsection{NPS Development Operations}
\end{verbatim}
\noindent That will force use of the original apt-sources for that container.
Labs must be checked into the local Git repository in order to be distributed. After creating and testing
Labs must be checked into the Git repository in order to be distributed. After creating and testing
a new lab, use the scripts/designer/bin/cleanlab4svn.py script to remove temporary files that do not belong in
git. Use the publish.py script (described above) to publish the lab containers.
The distrib/mkdist.sh script is used by NPS to create the distribution tar file. This script relies on
your local Git repository as the source to the Labtainer scripts and labs. Use the mk-devel-distrib.sh script
to publish the developer configuration of the tar file.
git.
The mkdist.sh and mk-devel-distrib.sh scripts include "myshare" variables that define a path to a directory
shared with the development VM's host. The scripts will place the resulting tar files in this directory. You
must then manually transfer the updated tar files (including the {\tt labtainer\_pdf.zip} file) to the Liferay
server at
\begin{verbatim}
davs://my.nps.edu/webdav/c3o-staging/document_library/labtainers
\end{verbatim}
After transfering the files, use the Liferay ``Publish to Live'' function to make the files available on the
Labtainers website (which is also where they are pulled from when a student runs update-labtainer.sh).
Be sure to push your Git repository updates to the GitHub master.
The distrib/publish.py script is used to rebuild and
publish individual labs, or optionally all of the Labtainer exercises managed by NPS.
The publish.py (without the {\tt -l} option) script will only rebuild labs that have changed. After pushing a new lab container
image to the Docker hub, the script deletes the image from the local system. The intent is to
ensure that future testing of the lab is done on the authoritative copy, i.e., from the hub.
See the \textit{Labtainers Framework Development Guide} for information on integration, testing and release management.
Labtainer base images are built and published from the scripts/designer/bin directory. Prior to publishing
baseline images, it is suggested that all local images be purged from the development machine, e,g.,
Expand Down
Binary file modified docs/student/labtainer-student.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/student/labtainer-student.tex
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ \subsection{Alternatives to the Labtainers VM Appliance}

\subsubsection{Installing Labtainers on an existing Linux system}
The Labtainer framework is distributed as a tarball from:
\url{https://my.nps.edu/web/c3o/labtainers}
\url{https://nps.edu/web/c3o/labtainers}
Click the link named: ``Download the Labtainer framework'', and untar the resulting file into
a permanent directory on your Linux system, e.g., into \verb ~/home. For example, if you downloaded the file
from a browser on your Linux system:
Expand Down

0 comments on commit 2e230ce

Please sign in to comment.