Configs

Config details and controls

Get all phenix configs

query Parameters
kind
string
Default: "all"
Enum: "all" "topology" "scenario" "experiment" "image" "user" "role"

limit configs to specified kind (defaults to all)

Responses

Response samples

Content type
application/json
{
  • "configs": [
    ]
}

Create new phenix config

Request Body schema:

phenix config creation parameters

apiVersion
required
string
kind
required
string
required
object
required
object

Responses

Request samples

Content type
{
  • "apiVersion": "string",
  • "kind": "string",
  • "metadata": {
    },
  • "spec": { }
}

Get existing phenix config

path Parameters
kind
required
string

kind of phenix config to get

name
required
string

name of phenix config to get

header Parameters
Accept
string
Default: application/json
Enum: "application/json" "application/x-yaml"

content format for response

Responses

Response samples

Content type
{
  • "apiVersion": "string",
  • "kind": "string",
  • "metadata": {
    },
  • "spec": { }
}

Update existing phenix config

Can also be used to rename a config by changing the name in the metadata portion of the config header and using the old name in the request path.

path Parameters
kind
required
string

kind of phenix config to get

name
required
string

name of phenix config to get

Request Body schema:

phenix config update parameters

apiVersion
required
string
kind
required
string
required
object
required
object

Responses

Request samples

Content type
{
  • "apiVersion": "string",
  • "kind": "string",
  • "metadata": {
    },
  • "spec": { }
}

Delete existing phenix config

path Parameters
kind
required
string

kind of phenix config to delete

name
required
string

name of phenix config to delete

Responses

Schemas

Config spec schemas

Get full schema (all config specs) for specific version

path Parameters
version
required
string
Enum: "v1" "v2"

version of phenix config schema to get

header Parameters
Accept
string
Default: application/json
Enum: "application/json" "application/x-yaml"

content format for response

Responses

Response samples

Content type
{ }

Get schema for specific config spec kind/version

path Parameters
kind
required
string
Enum: "topology" "scenario" "experiment" "image" "user" "role"

kind of phenix config schema to get

version
required
string
Enum: "v1" "v2"

version of phenix config schema to get

header Parameters
Accept
string
Default: application/json
Enum: "application/json" "application/x-yaml"

content format for response

Responses

Response samples

Content type
{ }

Experiments

Experiments details and controls

Get all phenix experiments

query Parameters
screenshot
string

whether or not to include VM screenshots (value is size to grab)

Responses

Response samples

Content type
application/json
{
  • "experiments": [
    ]
}

Create new phenix experiment

Request Body schema: application/json

phenix experiment creation parameters

name
string
topology
string
apps
Array of strings
vlan_min
integer
vlan_max
integer

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "topology": "string",
  • "apps": [
    ],
  • "vlan_min": 0,
  • "vlan_max": 0
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "topology": "string",
  • "apps": [
    ],
  • "start_time": "2019-08-24T14:15:22Z",
  • "running": true,
  • "vm_count": 0,
  • "vlan_min": 0,
  • "vlan_max": 0,
  • "vlan_count": 0,
  • "vlans": [
    ],
  • "vms": {
    }
}

Get existing phenix experiment

path Parameters
name
required
string

name of phenix experiment to get

query Parameters
screenshot
string

whether or not to include VM screenshots (value is size to grab)

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "topology": "string",
  • "apps": [
    ],
  • "start_time": "2019-08-24T14:15:22Z",
  • "running": true,
  • "vm_count": 0,
  • "vlan_min": 0,
  • "vlan_max": 0,
  • "vlan_count": 0,
  • "vlans": [
    ],
  • "vms": {
    }
}

Delete existing phenix experiment

path Parameters
name
required
string

name of phenix experiment to delete

Responses

Start existing phenix experiment

path Parameters
name
required
string

name of phenix experiment to start

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "topology": "string",
  • "apps": [
    ],
  • "start_time": "2019-08-24T14:15:22Z",
  • "running": true,
  • "vm_count": 0,
  • "vlan_min": 0,
  • "vlan_max": 0,
  • "vlan_count": 0,
  • "vlans": [
    ],
  • "vms": {
    }
}

Stop existing phenix experiment

path Parameters
name
required
string

name of phenix experiment to stop

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "topology": "string",
  • "apps": [
    ],
  • "start_time": "2019-08-24T14:15:22Z",
  • "running": true,
  • "vm_count": 0,
  • "vlan_min": 0,
  • "vlan_max": 0,
  • "vlan_count": 0,
  • "vlans": [
    ],
  • "vms": {
    }
}

Get current schedule for existing experiment

path Parameters
name
required
string

name of phenix experiment to get schedule for

Responses

Response samples

Content type
application/json
{
  • "schedule": [
    ]
}

Update current schedule for existing experiment

path Parameters
name
required
name

name of phenix experiment to update schedule for

Request Body schema: application/json

scheduling algorithm to use

algorithm
string

Responses

Request samples

Content type
application/json
{
  • "algorithm": "string"
}

Response samples

Content type
application/json
{
  • "schedule": [
    ]
}

Get captures for existing experiment

path Parameters
name
required
string

name of phenix experiment to get captures for

Responses

Response samples

Content type
application/json
{
  • "captures": [
    ]
}

Get list of files for experiment

path Parameters
name
required
string

name of phenix experiment to get files for

Responses

Response samples

Content type
application/json
{
  • "files": [
    ]
}

Download experiment file

path Parameters
name
required
string

name of phenix experiment to get file from

filename
required
string

name of file download

Responses

Virtual Machines

Experiment VM details and controls

get all VMs in existing experiment

path Parameters
exp_name
required
string

name of phenix experiment to get VMs for

query Parameters
screenshot
string

whether or not to include VM screenshots (value is size to grab)

Responses

Response samples

Content type
application/json
{
  • "vms": [
    ]
}

get given VM in existing experiment

path Parameters
exp_name
required
string

name of phenix experiment to get VM from

vm_name
required
string

name of phenix experiment VM to get

query Parameters
screenshot
string

whether or not to include VM screenshots (value is size to grab)

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "experiment": "string",
  • "host": "string",
  • "ipv4": [
    ],
  • "cpus": 0,
  • "ram": 0,
  • "disk": "string",
  • "dnb": true,
  • "networks": [
    ],
  • "taps": [
    ],
  • "captures": [
    ],
  • "running": null,
  • "uptime": 0,
  • "screenshot": "string"
}

Update existing VM settings in existing experiment

path Parameters
exp_name
required
string

name of phenix experiment to modify

vm_name
required
string

name of phenix virtual machine to modify

Request Body schema: application/json

phenix virtual machine patch parameters

host
string
cpus
integer
ram
integer
disk
string
dnb
boolean
object

Responses

Request samples

Content type
application/json
{
  • "host": "string",
  • "cpus": 0,
  • "ram": 0,
  • "disk": "string",
  • "dnb": true,
  • "interface": {
    }
}

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "experiment": "string",
  • "host": "string",
  • "ipv4": [
    ],
  • "cpus": 0,
  • "ram": 0,
  • "disk": "string",
  • "dnb": true,
  • "networks": [
    ],
  • "taps": [
    ],
  • "captures": [
    ],
  • "running": null,
  • "uptime": 0,
  • "screenshot": "string"
}

Delete phenix experiment VM

path Parameters
name
required
string

name of phenix experiment

vm_name
required
string

name of phenix virtual machine to delete

Responses

start VM in experiment

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix VM to start

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "experiment": "string",
  • "host": "string",
  • "ipv4": [
    ],
  • "cpus": 0,
  • "ram": 0,
  • "disk": "string",
  • "dnb": true,
  • "networks": [
    ],
  • "taps": [
    ],
  • "captures": [
    ],
  • "running": null,
  • "uptime": 0,
  • "screenshot": "string"
}

stop VM in experiment

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix VM to stop

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "experiment": "string",
  • "host": "string",
  • "ipv4": [
    ],
  • "cpus": 0,
  • "ram": 0,
  • "disk": "string",
  • "dnb": true,
  • "networks": [
    ],
  • "taps": [
    ],
  • "captures": [
    ],
  • "running": null,
  • "uptime": 0,
  • "screenshot": "string"
}

redeploy VM in experiment

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix VM to redeploy

Responses

Response samples

Content type
application/json
{
  • "id": 0,
  • "name": "string",
  • "experiment": "string",
  • "host": "string",
  • "ipv4": [
    ],
  • "cpus": 0,
  • "ram": 0,
  • "disk": "string",
  • "dnb": true,
  • "networks": [
    ],
  • "taps": [
    ],
  • "captures": [
    ],
  • "running": null,
  • "uptime": 0,
  • "screenshot": "string"
}

Get screenshot of running VM in experiment

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix virtual machine to get screenshot from

query Parameters
size
string

size of screenshot to grab

base64
boolean

whether or not to base64 encode the screenshot image

Responses

Tunnel to VNC of running VM using a WebSocket

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix virtual machine to connect to

Responses

get phenix experiment VM packet captures

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix VM to get captures for

Responses

Response samples

Content type
application/json
{
  • "captures": [
    ]
}

start phenix experiment VM packet capture

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix VM to start capture on

Request Body schema: application/json

phenix VM packet capture parameters

interface
integer
filename
string

Responses

Request samples

Content type
application/json
{
  • "interface": 0,
  • "filename": "string"
}

stop phenix experiment VM packet captures

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix VM to stop captures on

Responses

get phenix experiment VM snapshots

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix VM to get snapshots for

Responses

Response samples

Content type
application/json
{
  • "snapshots": [
    ]
}

create phenix experiment VM snapshot

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix VM to snapshot

Request Body schema: application/json

phenix VM snapshot parameters

filename
string

Responses

Request samples

Content type
application/json
{
  • "filename": "string"
}

restore phenix experiment VM to snapshot

path Parameters
exp_name
required
string

name of phenix experiment

vm_name
required
string

name of phenix VM to restore

snapshot
required
string

name of snapshot to restore VM to

Responses

Get all running VMs

query Parameters
screenshot
string

whether or not to include VM screenshots (value is size to grab)

Responses

Response samples

Content type
application/json
{
  • "vms": [
    ]
}

Hosts

Cluster host details

Get all cluster hosts

Responses

Response samples

Content type
application/json
{
  • "hosts": [
    ]
}

Applications

Available phenix user applications

Get all available user applications

Responses

Response samples

Content type
application/json
{
  • "applications": [
    ]
}

Topologies

Available phenix topologies

Get all available topologies

Responses

Response samples

Content type
application/json
{
  • "topologies": [
    ]
}

Disks

Available phenix disk images

Get all available disk images

Responses

Response samples

Content type
application/json
{
  • "disks": [
    ]
}

Users

User details and controls

Get all users

Responses

Response samples

Content type
application/json
{
  • "users": [
    ]
}

Create a new user

Request Body schema: application/json

user details

username
string
password
string
first_name
string
last_name
string
role_name
string
resource_names
Array of strings

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "password": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "role_name": "string",
  • "resource_names": [
    ]
}

Response samples

Content type
application/json
{
  • "username": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "role": {
    }
}

Get a specific user

path Parameters
username
required
string

username of user to get

Responses

Response samples

Content type
application/json
{
  • "username": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "role": {
    }
}

Update existing user

path Parameters
username
required
string

username of user to modify

Request Body schema: application/json

user paramaters

first_name
string
last_name
string
role_name
string
resource_names
Array of strings

Responses

Request samples

Content type
application/json
{
  • "first_name": "string",
  • "last_name": "string",
  • "role_name": "string",
  • "resource_names": [
    ]
}

Response samples

Content type
application/json
{
  • "username": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "role": {
    }
}

Delete existing user

path Parameters
username
required
string

username of user to delete

Responses

Signup as a new user

Request Body schema: application/json

user details

username
string
password
string
first_name
string
last_name
string

Responses

Request samples

Content type
application/json
{
  • "username": "string",
  • "password": "string",
  • "first_name": "string",
  • "last_name": "string"
}

Response samples

Content type
application/json
{
  • "username": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "role": "string",
  • "token": "string"
}

Login a user

query Parameters
user
string

login username

pass
string

login password

Responses

Response samples

Content type
application/json
{
  • "username": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "role": "string",
  • "token": "string"
}

Login a user

Request Body schema: application/json

login credentials

user
string
pass
string

Responses

Request samples

Content type
application/json
{
  • "user": "string",
  • "pass": "string"
}

Response samples

Content type
application/json
{
  • "username": "string",
  • "first_name": "string",
  • "last_name": "string",
  • "role": "string",
  • "token": "string"
}

Logout a user

Responses