Source code for vent.menus.tutorial_forms
from vent.menus.tutorials import TutorialForm
[docs]class TutorialAddingFilesForm(TutorialForm):
""" Tutorial Adding Files form for the Vent CLI """
def __init__(self, *args, **keywords):
""" Initialize adding files tutorial form fields """
title = "Adding Files"
text = """
In the main Vent menu, there is a field labeled 'File Drop'. The
provided directory is where Vent will be watching. Just add the
desired file into the directory and Vent will automatically
process those files with their respective plugins.
To change the directory that Vent watches, on the main menu,
there's a field labeled 'User Data'. Within that directory, there
exists a file named 'vent.cfg'. Within the file, there is a
section titled '[main]' with an option 'files'. Just change the
value of 'files' to the desired directory.
Example:
Let's assume that all core tools have been added, built, and have
been started. Let's also assume there's a plugin that deals with
*.csv files. If a .csv file is placed into the File Drop
directory, Vent will recognize the file extension and run the
plugin. This also works for multiple plugins that deal with the
same file type. If there were two plugins that dealt with .csv
files, Vent would run both on the same .csv file.
In addition, Vent also supports plugin pipelines.
Let's say there are two plugins: Plugin A processes .csv files and
Plugin B processes .csv2 files. A .csv file is added to the File
Drop directory, so Vent will start Plugin A, which will process
the file and output a .csv2 file in the same File Drop directory.
This, in turn, will cause Plugin B to start and process the newly
created .csv2 file.
"""
next_tutorial = "TUTORIALTROUBLESHOOTING"
TutorialForm.__init__(self,
title,
text,
next_tutorial,
*args,
**keywords)
[docs]class TutorialIntroForm(TutorialForm):
""" Tutorial introduction landing form for the Vent CLI """
def __init__(self, *args, **keywords):
""" Initialize introduction landing tutorial form fields """
title = "Tutorial Introduction"
text = """
Welcome to Vent!
This tutorial is intended to help you get up to speed on Vent,
some of the terminology we use, how to interact with this
application, getting setup, and more.
Please note the OK and CANCEL buttons on the bottom right of the
screen. If at any point you wish to quit the tutorial, simply
click CANCEL to be taken to the main menu. You can always find the
tutorial menu again from the main menu.
Navigating through our menus is simple. Directional arrow keys or
TAB will let you interact with the page and move between the
buttons. ENTER will select a button. At the top left you will
notice additional keybindings: CTRL+Q will take you back to the
main menu for this page. At the bottom left you will notice a menu
for you to access. This menu is specific to the tutorial and will
allow you to skip to material you want. Press CTRL+X to access the
menu, up and down directional arrows to change between entries or
to access additional content in menus that display - more -, ENTER
to dive deeper into a submenu, and ESC to exit the menu and return
to the current page. You can also use the shortcut letters to
switch between entries quickly.
Click OK when you are ready to continue on with the tutorial.
NEXT UP: About Vent - Background
"""
next_tutorial = "TUTORIALBACKGROUND"
TutorialForm.__init__(self,
title,
text,
next_tutorial,
*args,
**keywords)
[docs]class TutorialAddingPluginsForm(TutorialForm):
""" Tutorial Adding Plugins form for the Vent CLI """
def __init__(self, *args, **keywords):
""" Initialize adding plugins tutorial form fields """
title = "Adding Plugins"
text = """
Adding custom Vent plugins is easy.
From the main menu, hit '^X' to bring up the action menu.
Highlight 'Plugins' and hit enter to bring up a new menu. From
there, select 'Add new plugin' and hit 'Enter', which brings up
another new form.
It's possible to get plugins using Git or Docker.
For Git: Specify the repository URL and credentials (if needed)
and hit OK. Vent will display all branches that the repo
currently has. Highlight the desired branch and press the
'Space' key to select it. By default, Vent will pull from
the latest commit but it is possible to select whatever
desired commit. Just highlight the commit ID, press
enter, and a menu will pop up with all commit IDs.
Highlight the desired commit ID and press 'Enter' to
select it. Next, if the image should also be built,
leave the value of 'Build' to 'True'. Otherwise, set it
to 'False' and press OK.
Now, select all desired plugins and hit 'OK' and Vent
will do the rest.
For Docker: Give an image and name and hit OK.
"""
next_tutorial = "TUTORIALADDINGFILES"
TutorialForm.__init__(self,
title,
text,
next_tutorial,
*args,
**keywords)
[docs]class TutorialBackgroundForm(TutorialForm):
""" Tutorial Background form for the Vent CLI """
def __init__(self, *args, **keywords):
""" Initialize background tutorial form fields """
title = "Vent Background"
text = """TODO"""
next_tutorial = "TUTORIALTERMINOLOGY"
TutorialForm.__init__(self,
title,
text,
next_tutorial,
*args,
**keywords)
[docs]class TutorialBuildingCoresForm(TutorialForm):
""" Tutorial Building Cores form for the Vent CLI """
def __init__(self, *args, **keywords):
""" Initialize building cores tutorial form fields """
title = "Building Cores"
text = """
Building Vent's core tools is a snap.
At the main menu, press '^X' to bring up the action menu.
Highlight core tools and press 'Enter'.
Now highlight 'Build core tools' and press 'Enter'.
This will bring up a form with a list of core tools that are
able to be built. By default, all tools are selected, but it is
possible to select which tools to build using the arrow keys and
the 'Space' key.
The build process will take a few minutes so please be patient.
"""
next_tutorial = "TUTORIALSTARTINGCORES"
TutorialForm.__init__(self,
title,
text,
next_tutorial,
*args,
**keywords)
[docs]class TutorialGettingSetupForm(TutorialForm):
""" Tutorial Getting Setup form for the Vent CLI """
def __init__(self, *args, **keywords):
""" Initialize getting setup tutorial form fields """
title = "Getting Setup"
text = """
Here's a quick setup guide to quickly get Vent up and running.
1) Enter the core tools submenu from the main action menu and
'add all latest core tools'
2) Build all core tools
3) Start all core tools
Now, Vent has the tools to work. Now we need to add plugin tools
to process files placed into File Drop.
4) Hit '^X' to open the main action menu and go to the Plugins
submenu
5) Add and build new plugins using either Git or Docker
6) Now, drop any files that the plugins process into the File Drop
directory.
Congrats! You have just started and processed files using Vent!
"""
next_tutorial = "TUTORIALBUILDINGCORES"
TutorialForm.__init__(self,
title,
text,
next_tutorial,
*args,
**keywords)
[docs]class TutorialStartingCoresForm(TutorialForm):
""" Tutorial Starting Cores form for the Vent CLI """
def __init__(self, *args, **keywords):
""" Initialize starting cores tutorial form fields """
title = "Starting Cores"
text = """
Once a core tool has been added and built, the only thing left is
to start it, so it can begin doing work.
At the main menu, press '^X' to bring up the action menu.
Highlight core tools and press 'Enter'.
Now highlight 'Start core tools' and press 'Enter'.
This will bring up a form with a list of core tools that are
able to be started. By default, all tools are selected, but it is
possible to select which tools to start using the arrow keys and
the 'Space' key.
Once the desired tools are selected, press OK and Vent will start
up the core tools.
"""
next_tutorial = "TUTORIALADDINGPLUGINS"
TutorialForm.__init__(self,
title,
text,
next_tutorial,
*args,
**keywords)
[docs]class TutorialTerminologyForm(TutorialForm):
""" Tutorial terminology form for the Vent CLI """
def __init__(self, *args, **keywords):
""" Initialize terminology tutorial form fields """
title = "Vent Terminology"
text = """
Core Tool: Main set of tools that Vent uses to do work. These
tools are the backbone of Vent.
Plugin Tool: User added tools that process user defined file
types.
User Data: File directory that has meta data about Vent. The
most important files within User Data are:
plugin_manifest: meta data about all added tools
vent.log: logs concerning how Vent runs. Almost
every function within Vent will write to
this log.
vent.cfg: allows for the customization of certain
functionality within vent. File Drop
location can be set here. Certain GPU
functionality can be set here.
File Drop: File directory that Vent watches. Drop files in here
so Vent can see and process them.
Template Files: XXX TODO
"""
next_tutorial = "TUTORIALGETTINGSETUP"
TutorialForm.__init__(self,
title,
text,
next_tutorial,
*args,
**keywords)
[docs]class TutorialTroubleshootingForm(TutorialForm):
""" Tutorial troubleshooting form for the Vent CLI """
def __init__(self, *args, **keywords):
""" Initialize terminology tutorial form fields """
title = "Vent Troubleshooting"
text = """
Something not working as expected within Vent? Not a problem!
Let's first get some basic possible errors out of the way.
1) Is Docker daemon running? Vent uses Docker heavily so it is
necessary to have the Docker daemon running.
2) Is this the lastest version of Vent? Ways to get the latest
Vent version:
Using pip: 'pip install vent && vent'
Using Docker: 'docker pull cyberreboot/vent'
'docker run -it vent_image_id'
Using github: 'git clone https://github.com/CyberReboot/vent'
'cd vent && make && vent'
Still not working? That's fine! Let's get into the nitty gritty
and try to figure out what went wrong.
Firstly, let's see if it's Vent that's causing the problems.
Go to the 'User Data' file and open up 'vent.log' with your
favorite text editor. Let's search the key term 'False'. Iterate
through the search results and look for 'Status of some_function:
False'. This tells us that one of Vent's core functions is not
performing as expected. Next to it, there will be an error message
explaining what went wrong. If it's something with Vent's
implementation, please create an issue here:
https://github.com/CyberReboot/vent/issues
If there's no obvious error messages within 'vent.log', let's
check any added plugin tools. Run the command 'docker logs
syslog_container_id'. This will return all information about all
plugin containers and any information regarding the error should
be displayed here.
"""
next_tutorial = "MAIN"
TutorialForm.__init__(self,
title,
text,
next_tutorial,
*args,
**keywords)