REVEN-Axion 2018v1.4.4
Low Level Python API - Launcher Services

In this page, we will show the various launcher services available through the Python API.

List assets

list_projects

list_projects(user) -> list(project_id)

Request list of projects for given user.

Parameters
userName of user to request projects from -> string
Returns
list(project_id)

list_servers

list_servers() -> list(server_info)

Request list of running Reven servers.

Returns
list(server_info)

list_users

list_users() -> list(string)

Request list of reven users.

Returns
list(string)

list_vms

list_vms() -> list(vm_info)

Request list of available Virtual Machine configurations.

Returns
list(vm_info)

Project

project_abort_scenario_recording

project_abort_scenario_recording(project) -> None

Abort current scenario recording for a project.

Parameters
projectProject id (user, project name). -> project_id

project_create

project_create(project) -> None

Create a new project.

Parameters
projectProject id (user, project name). -> project_id

project_delete

project_delete(project) -> None

Delete a project.

Parameters
projectProject id (user, project name). -> project_id

project_details

project_details(project) -> server_info

Retrieve server information of a project.

Parameters
projectProject id (user, project name). -> project_id
Returns
server_info

project_download_file

project_download_file(project, filename) -> file_chunk

Download and return a file chunk.

Parameters
projectProject id (user, project name). -> project_id
filenameName of file to download. -> string
Returns
file_chunk

project_download_file_as

project_download_file_as(project, filename, destination) -> None

Download a file to a client side location.

Parameters
projectProject id (user, project name). -> project_id
filenameName of file to download. -> string
destinationFilepath to save downloaded file as. -> string

project_list_files

project_list_files(project) -> list(file_info)

List input files of a project.

Parameters
projectProject id (user, project name). -> project_id
Returns
list(file_info)

project_record_scenario

project_record_scenario(project, scenario) -> None

Record a scenario.

Parameters
projectProject id (user, project name). -> project_id
scenarioScenario configuration. -> scenario_recording_config

project_remove_file

project_remove_file(project, filename) -> None

Remove an input file from a project.

Parameters
projectProject id (user, project name). -> project_id
filenameName of file to remove. -> string

project_rename

project_rename(project, new_project) -> None

Rename a project.

Parameters
projectId of project to rename. -> project_id
new_projectNew project id (user, project name). -> project_id

project_rename_file

project_rename_file(project, filename, new_filename) -> None

Rename an input file from a project.

Rename a file after uploading

# This function renames a file on the server right after uploading.
import reven_launcher
from os.path import basename
def project_upload_and_rename_file(launcher, project_id, path, new_name):
launcher.project_upload_file(project_id, path)
Parameters
projectProject id (user, project name). -> project_id
filenameName of file to rename. -> string
new_filenameNew name for given file. -> string

project_scenario

project_scenario(project) -> scenario_recording_info

Retrieve scenario recording status for a project.

Parameters
projectProject id (user, project name). -> project_id
Returns
scenario_recording_info

project_upload_file

project_upload_file(project, filepath) -> None

Upload input file to a project.

Parameters
projectProject id (user, project name). -> project_id
filepathPath of the file to upload. -> string

Server

server_kill

server_kill(port) -> None

Kill Reven server by port.

Parameters
portPort of Reven server. -> integer

server_launch

server_launch(project, launch_config) -> integer

Launch Reven server for given project and return server port.

Starting multiple servers for a single project

project_id = reven_api.project_id('example', 'test')
port1 = launcher.server_launch(project_id) # first server launched on port1
port2 = launcher.server_launch(project_id) # second server launched on port2

Due to the design of the API, multiple servers can be started for a single project. The main use case for this would be to launch a new execution with extra inspectors while keeping a previous one for browsing in Axion. However, please note that this workflow is not officially supported. Each started server will have its own port. These are different server instances, but Axion doesn'thave the means to display them.It will display the server as 'started' for as long as there is at least one server instance of the same project started. The displayed port will be the lowest among all server instance, and the instance at this port will be the one that Axion connects to and which will be closed if the 'force close' button is clicked. Having different server instances launched on the same project has practical implications:

  • It becomes more difficult to keep track of launched servers and projects
  • It becomes more likely to connect to different server instances by mistake, wich will quickly exhaust licenses. You can programmatically list all server instances with launcher_connection.list_servers():
for server in launcher.list_servers():
print server # print full information
print server.project # print the project_id of the server
print server.reven_server.port # print the port of the server

From there, you can kill unwanted duplicates with launcher_connection.server_kill(port). However, there is currently no practical way of knowing which server was launched first (in particular, the most recent server does not necessarily have the highest port). The safest way to fix duplicate problems is to prevent them from happening.You can do this by checking if a server is already launched before starting a new one:

def launch_or_get_port(launcher, projectid, reven_config):
for server in l.list_servers():
if server.project == projectid:
return server.reven_server.port
# not found, launching a new one
return launcher.server_launch(projectid, reven_config)
Parameters
projectid of project to launch. -> project_id
launch_configlaunch configuration (license, port, etc.). -> reven_launch_config
Returns
integer

server_restart

server_restart(port) -> integer

Restart Reven server by port, return new server port.

Parameters
portPort of Reven server. -> integer
Returns
integer

server_unblock

server_unblock(port) -> None

Unblock Reven server by port (stop current service).

Parameters
portPort of Reven server. -> integer

System information

system_disk_info

system_disk_info() -> disk_info

Return disk usage.

Returns
disk_info

system_licenses_info

system_licenses_info() -> licenses_info

Return licenses usage.

Returns
licenses_info