.. _available_model_components:

#############################
Model Component Documentation
#############################


.. _vyos_mc_repo:

*******************
firewheel_repo_vyos
*******************

This repository contains FIREWHEEL model components for using `VyOS <https://vyos.io>`_ routers within a FIREWHEEL experiment.

Building Images
===============

Due to licensing limitations, we are currently unable to provide the expected binary files (VM Resources nor Images) that are used within these model components.
For the VM Resources, we have provided an `INSTALL <https://sandialabs.github.io/firewheel/tutorials/install_file.html>`__ script to reproducibly recreate them, when possible.
However, for images, users will need to follow the `Image Creation Tutorial <https://sandialabs.github.io/firewheel/tutorials/image.html>`__ to create compatible images.
The following images are referenced within this repository:

Located in ``vyos.helium118``
-------------------------------
- `VyOS Helium (1.1.8) <https://vyos.net/get/>`_

Located in ``vyos.equuleus``
-------------------------------
- `VyOS Equuleus (1.3.x) <https://vyos.net/get/>`_


.. toctree::
    :maxdepth: 1

    vyos
    vyos.equuleus
    vyos.helium118


.. _linux_mc_repo:

********************
firewheel_repo_linux
********************

This repository contains FIREWHEEL Model Components related to Linux and Linux specific applications.
Currently, there are generic Linux-related MCs as well as MCs related to several Ubuntu distributions.

Building Images
===============

Due to licensing limitations, we are currently unable to provide the expected binary files (VM Resources nor Images) that are used within these model components.
For the VM Resources, we have provided an `INSTALL <https://sandialabs.github.io/firewheel/tutorials/install_file.html>`__ script to reproducibly recreate them, when possible.
However, for images, users will need to follow the `Image Creation Tutorial <https://sandialabs.github.io/firewheel/tutorials/image.html>`__ to create compatible images.
The following images are referenced within this repository:

Located in ``linux.ubuntu1404``
-------------------------------
- `Ubuntu 14.04.5 Server <http://old-releases.ubuntu.com/releases/14.04.5/>`_
- `Ubuntu 14.04.5 Desktop <http://old-releases.ubuntu.com/releases/14.04.5/>`_

Located in ``linux.ubuntu1604``
-------------------------------
- `Ubuntu 16.04.4 Server <http://old-releases.ubuntu.com/releases/16.04.4/>`_
- `Ubuntu 16.04.4 Desktop <http://old-releases.ubuntu.com/releases/16.04.4/>`_

Located in ``linux.ubuntu1804``
-------------------------------
* `Ubuntu 18.04.5 Server <http://old-releases.ubuntu.com/releases/18.04.5/>`_
* `Ubuntu 18.04.5 Desktop <http://old-releases.ubuntu.com/releases/18.04.5/>`_

Located in ``linux.ubuntu2204``
-------------------------------
- `Ubuntu 22.04 Server <https://releases.ubuntu.com/jammy/>`_
- `Ubuntu 22.04 Desktop <https://releases.ubuntu.com/jammy/>`_



.. toctree::
    :maxdepth: 1

    linux.base_objects
    linux.ubuntu
    linux.ubuntu1404
    linux.ubuntu1604
    linux.ubuntu1804
    linux.ubuntu2204


.. _layer2_mc_repo:

*********************
firewheel-repo-layer2
*********************

This repository contains FIREWHEEL Model Components for enabling `layer-2 <https://en.wikipedia.org/wiki/Data_link_layer>`_ networking within an experiment.


.. toctree::
    :maxdepth: 1

    layer2.ovs
    layer2.tap


.. _ntp_mc_repo:

******************
firewheel_repo_ntp
******************

This repository contains FIREWHEEL model components for enabling the Network Time Protocol (NTP) within an experiment.

Building VMRs
=============

Due to licensing limitations, we are currently unable to provide the expected binary files (VM Resources nor Images) that are used within these model components.
For the VM Resources, we have provided an `INSTALL <https://sandialabs.github.io/firewheel/tutorials/install_file.html>`__ script to reproducibly recreate them, when possible.


.. toctree::
    :maxdepth: 1

    ntp.time_server


.. _base_mc_repo:

*******************
firewheel_repo_base
*******************

This Model Component repository contains many of the basic objects necessary to create an experiment using FIREWHEEL.
This includes initializing the experiment graph, creating the basic VM object, and converting the graph to minimega commands to launch the experiment.
Because the Model Components contained within this repository are relied upon by almost every other repository, it is necessary to have this repository installed.


.. toctree::
    :maxdepth: 1

    as.checker
    base_objects
    common.dropper
    common.runner
    control_network
    generic_vm_objects
    minimega.configure_ips
    minimega.create_mac_addresses
    minimega.emulated_entities
    minimega.launch
    minimega.parse_experiment_graph
    minimega.resolve_vm_images
    minimega.schedules_ready
    minimega.send_miniweb_arp
    minimega.testbed_available
    misc.blank_graph
    misc.networkx
    misc.print_graph
    tests.check_times
    tests.connect_all
    tests.large_resource
    tests.networkx
    tests.ping_all
    tests.qos
    tests.reboot
    tests.router_tree
    tests.vm_gen
    vm_resource.schedule
    vm_resource.validate


.. _dns_mc_repo:

******************
firewheel_repo_dns
******************

This repository contains FIREWHEEL model components for enabling `Domain Name Systems (DNS) <https://en.wikipedia.org/wiki/Domain_Name_System>`_ within a FIREWHEEL experiment.

Building VMRs
=============

Due to licensing limitations, we are currently unable to provide the expected binary files (VM Resources nor Images) that are used within these model components.
For the VM Resources, we have provided an `INSTALL <https://sandialabs.github.io/firewheel/tutorials/install_file.html>`__ script to reproducibly recreate them, when possible.


.. toctree::
    :maxdepth: 1

    dns.configure_bind
    dns.dns_objects
    dns.insert_dns
    dns.insert_records
    dns.populate_zones
    dns.set_nameservers


.. _tutorials_mc_repo:

************************
firewheel_repo_tutorials
************************

This FIREWHEEL Model Component repository contains several MCs which are used as examples in FIREWHEEL tutorials.

**NOTE:** These reference model components may have slightly different syntax than those referenced in the `FIREWHEEL Tutorials <https://sandialabs.github.io/firewheel/tutorials/index.html>`_ due to various linting/code formatting, but the logic should closely align.


.. toctree::
    :maxdepth: 1

    acme.run
    acme.set_hostname
    acme.topology
    tutorials.bios
    tutorials.simple_server