Packages
List packages
Get a list of packages.
URL Parameters
Name | Description |
---|---|
page |
integer (optional) See Paging |
limit |
integer (optional) See Paging |
detailed |
boolean (optional) See Summary / Detailed Representations |
filter |
string (optional) See Filtering |
sort |
string (optional) See Sorting |
Response
200 OK
{
"timestamp": "2016-04-14T10:19:13.039004889-04:00",
"data": [
{
"id": "82",
"name": "HTTP_download",
"description": "QA Cafe regression tests, test run 1",
"created": "0000-12-31T19:03:58-04:56",
"updated": "2016-04-13T11:15:33.028128-04:00",
"locked": false,
"test_count": "3",
"user_id": "1",
"config_id": "0",
"device_id": "12",
"tags": [],
"use_as_testlist": false,
"schedule": {
"enabled": true,
"spec": "30 17 * * *",
"options": {
"tags": [],
"skip_tests": [],
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
}
},
{
"id": "172",
"name": "RV220W",
"description": "VPN TEST",
"created": "0000-12-31T19:03:58-04:56",
"updated": "2016-04-13T11:15:33.030267-04:00",
"locked": false,
"test_count": "1",
"user_id": "1",
"config_id": "0",
"device_id": "10",
"tags": [
"CDRouter",
"Support"
],
"use_as_testlist": false,
"schedule": {
"enabled": false,
"spec": "",
"options": {
"tags": [],
"skip_tests": [],
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
}
}
],
"links": {
"current": 1,
"first": 1,
"last": 14,
"limit": 10,
"next": 2,
"total": 133
}
}
Get a package
Get a package.
Response
200 OK
{
"timestamp": "2016-04-14T10:22:42.598320818-04:00",
"data": {
"id": "5",
"name": "basic",
"description": "",
"created": "2015-11-17T10:34:23.297556-05:00",
"updated": "2016-04-13T11:15:33.040246-04:00",
"locked": false,
"test_count": "101",
"testlist": [
"ADDON_SNMP",
"MODULE_snmp-v6.tcl",
"ipv6_snmp_200",
"MODULE_basic.tcl",
"ipv6_snmp_103"
],
"extra_cli_args": "",
"user_id": "1",
"agent_id": "1",
"config_id": "6",
"device_id": "12",
"options": {
"forever": false,
"loop": "0",
"repeat": "0",
"maxfail": "0",
"duration": "0",
"duration_units": "seconds",
"duration_interrupt": false,
"duration_no_error": false,
"wait": "0",
"pause": false,
"shuffle": false,
"seed": "0",
"retry": "0",
"rdelay": "0",
"sync": false
},
"tags": [
"one",
"two",
"three"
],
"use_as_testlist": false,
"schedule": {
"enabled": true,
"spec": "30 17 * * *",
"options": {
"tags": [],
"skip_tests": [],
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
},
"interfaces": [
{
"name": "lan",
"value": "eth1",
"is_wireless": false,
"is_ics": false
},
{
"name": "wan",
"value": "eth2",
"is_wireless": false,
"is_ics": false
}
]
}
}
Response
404 Not Found
{
"error": "no such package"
}
Create a package
Create a new package.
Example
{
"agent_id": "1",
"test_count": "517",
"testlist": [
"MODULE_basic.tcl",
"cdrouter_dhcp_server_1",
"cdrouter_dhcp_server_2",
"cdrouter_dhcp_server_3",
"cdrouter_dhcp_server_100",
"cdrouter_dhcp_server_200",
"cdrouter_dhcp_server_300",
"ADDON_IPv6"
],
"user_id": "1",
"name": "new package",
"config_id": "6",
"device_id": "12",
"description": "package description",
"tags": [
"one",
"two",
"three"
],
"options": {
"pause": true,
"duration": "300",
"retry": "5"
},
"use_as_testlist": false,
"schedule": {
"enabled": true,
"spec": "30 17 * * *",
"options": {
"tags": [],
"skip_tests": [],
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
}
}
Response
200 OK
{
"timestamp": "2016-04-15T09:11:30.136008699-04:00",
"data": {
"id": "1050",
"name": "new package",
"description": "package description",
"created": "2016-04-15T09:11:30.107517222-04:00",
"updated": "2016-04-15T09:11:30.107517222-04:00",
"locked": false,
"test_count": "517",
"testlist": [
"MODULE_basic.tcl",
"cdrouter_dhcp_server_1",
"cdrouter_dhcp_server_2",
"cdrouter_dhcp_server_3",
"cdrouter_dhcp_server_100",
"cdrouter_dhcp_server_200",
"cdrouter_dhcp_server_300",
"ADDON_IPv6"
],
"extra_cli_args": "",
"user_id": "1",
"agent_id": "1",
"config_id": "6",
"device_id": "12",
"options": {
"forever": false,
"loop": "0",
"repeat": "0",
"maxfail": "0",
"duration": "300",
"duration_units": "seconds",
"duration_interrupt": false,
"duration_no_error": false,
"wait": "0",
"pause": true,
"shuffle": false,
"seed": "0",
"retry": "5",
"rdelay": "0",
"sync": false
},
"tags": [
"one",
"three",
"two"
],
"use_as_testlist": false,
"schedule": {
"enabled": true,
"spec": "30 17 * * *",
"options": {
"tags": [],
"skip_tests": [],
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
},
"interfaces": [
{
"name": "lan",
"value": "eth1",
"is_wireless": false,
"is_ics": false
},
{
"name": "wan",
"value": "eth2",
"is_wireless": false,
"is_ics": false
}
]
}
}
Edit a package
Edit a package.
Example
PATCH /api/v1/packages/123/
{
"id": "123",
"name": "all",
"description": "abcd",
"testlist": [
"ADDON_CDRouter",
"ADDON_Multiport",
"ADDON_TR-069",
"ADDON_BBF.069",
"ADDON_IKE",
"ADDON_IPv6",
"ADDON_Storage",
"ADDON_SNMP",
"ADDON_Nmap",
"ADDON_Performance"
],
"extra_cli_args": "",
"user_id": "1",
"config_id": "6",
"device_id": "10",
"options": {
"forever": false,
"loop": "0",
"repeat": "0",
"maxfail": "0",
"duration": "0",
"duration_units": "seconds",
"duration_interrupt": false,
"duration_no_error": false,
"wait": "0",
"pause": false,
"shuffle": false,
"seed": "0",
"retry": "0",
"rdelay": "0",
"sync": false
},
"tags": [
"one",
"two",
"three"
],
"use_as_testlist": true,
"schedule": {
"enabled": true,
"spec": "30 17 * * *",
"options": {
"tags": [],
"skip_tests": [],
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
}
}
Response
200 OK
{
"timestamp": "2016-04-15T09:11:30.136008699-04:00",
"data": {
"id": "123",
"name": "all",
"description": "abcd",
"created": "2016-03-02T14:27:50.700837-05:00",
"updated": "2016-04-13T11:15:33.035754-04:00",
"locked": false,
"test_count": "4040",
"testlist": [
"ADDON_CDRouter",
"ADDON_Multiport",
"ADDON_TR-069",
"ADDON_BBF.069",
"ADDON_IKE",
"ADDON_IPv6",
"ADDON_Storage",
"ADDON_SNMP",
"ADDON_Nmap",
"ADDON_Performance"
],
"extra_cli_args": "",
"user_id": "1",
"agent_id": "1",
"config_id": "6",
"device_id": "10",
"options": {
"forever": false,
"loop": "0",
"repeat": "0",
"maxfail": "0",
"duration": "0",
"duration_units": "seconds",
"duration_interrupt": false,
"duration_no_error": false,
"wait": "0",
"pause": false,
"shuffle": false,
"seed": "0",
"retry": "0",
"rdelay": "0",
"sync": false
},
"tags": [
"one",
"two",
"three"
],
"use_as_testlist": true,
"schedule": {
"enabled": true,
"spec": "30 17 * * *",
"options": {
"tags": [],
"skip_tests": [],
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
},
"interfaces": [
{
"name": "lan",
"value": "eth1",
"is_wireless": false,
"is_ics": false
},
{
"name": "wan",
"value": "eth2",
"is_wireless": false,
"is_ics": false
}
]
}
}
Delete a package
Delete a package.
Response
204 No Content
Lock a package
Lock a package. Locking a package prevents it from being modified or deleted until it is unlocked.
Response
200 OK
{
"timestamp": "2023-03-29T15:44:56.344988954-04:00",
"data": {
"id": "66",
"name": "delme1",
"description": "",
"created": "2021-09-21T09:43:36.849352-04:00",
"updated": "2023-03-28T11:09:01.659284-04:00",
"locked": true,
"test_count": "0",
"testlist": [],
"extra_cli_args": "",
"user_id": "1",
"agent_id": "1",
"config_id": "0",
"device_id": "0",
"options": {
"forever": true,
"loop": "0",
"repeat": "3",
"maxfail": "0",
"duration": "0",
"duration_units": "seconds",
"duration_interrupt": false,
"duration_no_error": false,
"wait": "0",
"pause": false,
"shuffle": false,
"seed": "0",
"retry": "0",
"rdelay": "0",
"sync": false
},
"tags": [
"foo"
],
"use_as_testlist": false,
"note": "",
"schedule": {
"enabled": false,
"spec": "0 0 * * *",
"options": {
"tags": null,
"skip_tests": null,
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
}
}
}
Unlock a package
Unlock a package. Unlocking a locked package allows it to be modified or deleted once again.
Response
200 OK
{
"timestamp": "2023-03-29T15:44:56.344988954-04:00",
"data": {
"id": "66",
"name": "delme1",
"description": "",
"created": "2021-09-21T09:43:36.849352-04:00",
"updated": "2023-03-28T11:09:01.659284-04:00",
"locked": false,
"test_count": "0",
"testlist": [],
"extra_cli_args": "",
"user_id": "1",
"agent_id": "1",
"config_id": "0",
"device_id": "0",
"options": {
"forever": true,
"loop": "0",
"repeat": "3",
"maxfail": "0",
"duration": "0",
"duration_units": "seconds",
"duration_interrupt": false,
"duration_no_error": false,
"wait": "0",
"pause": false,
"shuffle": false,
"seed": "0",
"retry": "0",
"rdelay": "0",
"sync": false
},
"tags": [
"foo"
],
"use_as_testlist": false,
"note": "",
"schedule": {
"enabled": false,
"spec": "0 0 * * *",
"options": {
"tags": null,
"skip_tests": null,
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
}
}
}
Get a package’s shares
Get shares for a package.
Response
200 OK
{
"timestamp": "2016-04-15T10:00:22.32676552-04:00",
"data": [
{
"user_id": "307",
"read": true,
"write": false,
"execute": false
},
{
"user_id": "309",
"read": true,
"write": false,
"execute": false
}
]
}
Edit a package’s shares
Edit shares for a package.
Example
PATCH /api/v1/packages/123/shares
{
"user_ids": [
309,
307
]
}
Response
200 OK
{
"timestamp": "2016-04-15T10:00:22.32676552-04:00",
"data": [
{
"user_id": "309",
"read": true,
"write": false,
"execute": false
},
{
"user_id": "307",
"read": true,
"write": false,
"execute": false
}
]
}
Get a package’s expanded testlist
Get the testlist for a package, with all addons, modules and testlists expanded.
Response
200 OK
{
"timestamp": "2016-04-15T10:00:22.32676552-04:00",
"data": [
"cdrouter_basic_1",
"cdrouter_basic_2",
"cdrouter_nat_1",
"cdrouter_nat_100"
]
}
Get a package’s interfaces
Process a package with cdrouter-cli -print-interfaces
.
Example
POST /api/v1/packages/?process=interfaces
{
"config_id": "58",
"extra_cli_args": "-testvar lanInterface=eth2"
}
Response
200 OK
{
"timestamp": "2022-02-14T10:37:07.88200925-05:00",
"data": [
{
"name": "lan",
"value": "eth2",
"is_wireless": false,
"is_ics": false
},
{
"name": "wan",
"value": "wifi0",
"is_wireless": true,
"is_ics": false
}
]
}
Export a package
Export a package.
Response
200 OK
Content-Type: application/x-gzip
Content-Disposition: inline; filename="{name}.gz"
Analyze a package
Get a list of tests that will be skipped for a package.
Response
200 OK
{
"timestamp": "2016-04-15T09:55:02.225208264-04:00",
"data": {
"total_count": 51,
"run_count": 23,
"skipped_count": 3,
"skipped_tests": [
{
"id": 1,
"name": "cdrouter_basic_10",
"index": 2,
"group": "CDRouter",
"module": "basic.tcl",
"synopsis": "Verify LAN DHCP clients receive gateway/DNS configuration from WAN side",
"description": "\n\n step 1. Start new DHCP client on LAN interface\n step 2. Verify the received DHCP options match the WAN configuration\n step 3. Verify network mask matches configured network mask\n step 4. Verify gateway is router's LAN IP address\n step 5. Verify DNS server is one of the following values:\n\n a. WAN ISP DNS server, if the testvar DNStoDHCP is set to 'yes'\n b. user defined DNS server if the testvar lanDnsServer is enabled\n c. the router's LAN IP if the testvar DNStoDHCP is set to 'no'\n and the testvar lanDnsServer is disabled\n\n step 6. If the WAN is running DHCP, verify domain is WAN ISP domain name\n\n",
"labels": [
"all",
"incompatible-with-internal-dhcp",
"requires-additional-lan-client",
"requires-ipv4",
"requires-lan-interface"
],
"testvars": [
"DNStoDHCP",
"lanDnsServer",
"wanDnsServer",
"wanDomainName",
"wanMode"
],
"skip_name": "incompatible-with-internal-dhcp",
"skip_reason": "Skipping tests that are not compatible with static IPv4 addressing on the LAN"
},
{
"id": 1,
"name": "cdrouter_basic_20",
"index": 3,
"group": "CDRouter",
"module": "basic.tcl",
"synopsis": "Outbound packets use specified/cloned source MAC address",
"description": "\n\n step 1. Send an ICMP Echo Request from the LAN to the remote host IPv4\n step 2. Verify that an ICMP Echo Request is received on the WAN\n step 3. Verify that the source MAC address in the ICMP Echo Request received\n on the WAN matches the expected MAC address of DUT's WAN interface\n\n NOTE: This test is skipped for wanMode PPPoA.\n\n NOTE: To configure the expected MAC address of the DUT's WAN interface,\n configure the testvar \"wanDutMac\". If this testvar is not defined, this test\n case will be skipped.\n\n",
"labels": [
"all",
"incompatible-with-pppoa-wan",
"requires-ipv4",
"requires-lan-interface",
"requires-wan-dut-mac"
],
"testvars": [
"wanDutMac"
],
"skip_name": "requires-wan-dut-mac",
"skip_reason": "Skipping MAC clone test case (wanDutMac not defined)"
},
{
"id": 1,
"name": "cdrouter_app_10",
"index": 163,
"group": "CDRouter",
"module": "apps.tcl",
"synopsis": "Connections opened for FTP PORT command check for correct IPv4 address",
"description": "\n\n step 1. Initiate an outbound FTP connection to FTP server port\n step 2. Verify the connection is established\n step 3. Send the FTP port command\n step 4. Verify router translates port command using router's address\n step 5. From new host, attempt inbound TCP connection for FTP data connection\n step 6. Verify inbound TCP connection is not established\n step 7. Close both connections\n\n",
"labels": [
"all",
"requires-additional-wan-public-ip",
"requires-forwarding",
"requires-ipv4",
"requires-lan-interface"
],
"testvars": [],
"skip_name": "requires-forwarding",
"skip_reason": "Skipping tests and modules not compatible with bridge configuration"
}
]
}
}
Bulk export packages
Bulk export a set of packages.
URL Parameters
Name | Description |
---|---|
bulk |
string (required) Must be export |
ids |
string (required) Comma-separated package IDs to export |
Example
GET /api/v1/packages/?bulk=export&ids=123,456,789
Response
200 OK
Content-Type: application/x-gzip
Content-Disposition: inline; filename="packages-{timestamp}.gz"
Bulk copy packages
Bulk copy a set of packages.
Example
POST /api/v1/packages/?bulk=copy
{
"packages": [
{"id": "286"},
{"id": "5"}
]
}
Response
200 OK
Returns packages array containing new packages copied from input IDs.
{
"timestamp": "2016-04-15T09:25:34.483085665-04:00",
"data": [
{
"id": "1051",
"name": "all (copy 1)",
"description": "",
"created": "2016-03-02T14:27:50.700837-05:00",
"updated": "2016-04-13T11:15:33.035754-04:00",
"locked": false,
"test_count": "4040",
"testlist": [
"ADDON_CDRouter",
"ADDON_Multiport",
"ADDON_TR-069",
"ADDON_BBF.069",
"ADDON_IKE",
"ADDON_IPv6",
"ADDON_Storage",
"ADDON_SNMP",
"ADDON_Nmap",
"ADDON_Performance"
],
"extra_cli_args": "",
"user_id": "1",
"agent_id": "1",
"config_id": "6",
"device_id": "12",
"options": {
"forever": false,
"loop": "0",
"repeat": "0",
"maxfail": "0",
"duration": "0",
"duration_units": "seconds",
"duration_interrupt": false,
"duration_no_error": false,
"wait": "0",
"pause": false,
"shuffle": false,
"seed": "0",
"retry": "0",
"rdelay": "0",
"sync": false
},
"tags": [],
"use_as_testlist": false
},
{
"id": "1052",
"name": "basic (copy 1)",
"description": "",
"created": "2015-11-17T10:34:23.297556-05:00",
"updated": "2016-04-13T11:15:33.040246-04:00",
"locked": false,
"test_count": "101",
"testlist": [
"ADDON_SNMP",
"MODULE_snmp-v6.tcl",
"ipv6_snmp_200",
"MODULE_basic.tcl",
"ipv6_snmp_103"
],
"extra_cli_args": "",
"user_id": "1",
"agent_id": "1",
"config_id": "6",
"device_id": "12",
"options": {
"forever": false,
"loop": "0",
"repeat": "0",
"maxfail": "0",
"duration": "0",
"duration_units": "seconds",
"duration_interrupt": false,
"duration_no_error": false,
"wait": "0",
"pause": false,
"shuffle": false,
"seed": "0",
"retry": "0",
"rdelay": "0",
"sync": false
},
"tags": [],
"use_as_testlist": false,
"schedule": {
"enabled": true,
"spec": "30 17 * * *",
"options": {
"tags": [],
"skip_tests": [],
"begin_at": "",
"end_at": "",
"extra_cli_args": ""
}
},
"interfaces": [
{
"name": "lan",
"value": "eth1",
"is_wireless": false,
"is_ics": false
},
{
"name": "wan",
"value": "eth2",
"is_wireless": false,
"is_ics": false
}
]
}
]
}
Bulk edit packages
Bulk edit a set of packages.
URL Parameters
Name | Description |
---|---|
bulk |
string (required) Must be edit |
filter |
string (optional) See Filtering |
all |
boolean (optional) If true , apply edits to all packages. |
Example
Bulk edit packages 5
and 286
, setting their user_id
field to 3
,
config_id
field to 12
, device_id
field to 17
, and tags
field to ["foo", "bar", "baz"]
.
POST /api/v1/packages/?bulk=edit
{
"packages": [
{"id": "5"},
{"id": "286"}
],
"fields": {
"user_id": "3",
"config_id": "12",
"device_id": "17",
"tags": [
"foo",
"bar",
"baz"
]
}
}
Bulk edit packages matching filters user_id=3
and test_count=1
,
setting their tags
field to ["one"]
.
POST /api/v1/packages/?bulk=edit&filter=user_id=3&filter=test_count=1
{
"fields": {
"tags": [
"one"
]
}
}
Bulk edit all packages, setting their user_id
field to 3
.
POST /api/v1/packages/?bulk=edit&all=true
{
"fields": {
"user_id": "3"
}
}
Response
204 No Content
Bulk delete packages
Bulk delete a set of packages.
URL Parameters
Name | Description |
---|---|
bulk |
string (required) Must be delete |
filter |
string (optional) See Filtering |
all |
boolean (optional) If true , delete all packages. |
Example
Bulk delete packages 5
and 286
.
POST /api/v1/packages/?bulk=delete
{
"packages": [
{"id": "5"},
{"id": "286"}
]
}
Bulk delete packages matching filters user_id=3
and test_count=1
.
POST /api/v1/packages/?bulk=delete&filter=user_id=3&filter=test_count=1
Bulk delete all packages.
POST /api/v1/packages/?bulk=delete&all=true
Response
204 No Content