Skip to content

Orchestration REST interface

Please also read the Orchestration page, especially with regards to understanding the difference between Orchestration v1 and v2.

GET requests:

POST requests:

DELETE requests:

Get supported providers

Retrieve a list of all the providers supported by this WombatOAM version.

Definition

1
GET /api/orch/supported-provider

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/supported-provider"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[
  {
    "opts": [],
    "driver": "wo_orch_elibcloud_driver",
    "id": "ec2"
  },
  {
    "opts": [],
    "driver": "wo_orch_elibcloud_driver",
    "id": "hp"
  },
  {
    "opts": [],
    "driver": "wo_orch_elibcloud_driver",
    "id": "rackspace"
  },
  {
    "opts": [
      "servers"
    ],
    "driver": "wo_orch_driver_ssh",
    "id": "bare-metal"
  }
]

Arguments

None.

Returns

An array of provider objects.

Get available providers

Retrieve a list of all the available providers (i.e. providers already registered by the user).

Definition

1
GET /api/orch/provider

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/provider"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
[
  {
    "uuid": "d010c157-dd36-4990-b894-eeccce873c09",
    "name": "EC2",
    "type": "ec2",
    "driver": "wo_orch_elibcloud_driver",
    "opts": {
      "name": "EC2",
      "username": "AKIAIWCGOGME26P7VB3A",
      "password": "GAQZqfvsIgEaIjR590OAdxtdNAsOQ3UrKpM9bqg7",
      "type": "virtual",
      "vprovider": "ec2"
    }
  },
  {...}
]

Arguments

None.

Returns

An array of provider objects.

Get information about a provider

Retrieve details of a specified provider.

Definition

1
GET /api/orch/provider/PROVIDER_UUID

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/provider/0336fee8-d8c4-48ba-adfb-50f2e6421107"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
{
  "uuid": "0336fee8-d8c4-48ba-adfb-50f2e6421107",
  "name": "Rackspace",
  "type": "rackspace",
  "driver": "wo_orch_elibcloud_driver",
  "opts": {
    "name": "Rackspace",
    "username": "myuser",
    "password": "mypassword",
    "type": "virtual",
    "vprovider": "rackspace",
    "service_region": "lon"
  },
}

Arguments

Argument Description
release UUID Required. The identifier of the release.

Returns

The release object.

Get available releases

Retrieve a list of all available releases.

Definition

1
GET /api/orch/release

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/release"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
[
  {
    "uuid": "952d97dd-c895-4f4a-8261-1f320d0d9ba1",
    "name": "Riak",
    "state": "UPLOADED",
    "path": "/Users/demo/wombat/rel/wombat/wombat/data/wombat@127.0.0.1/orch/releases/952d97dd-c895-4f4a-8261-1f320d0d9ba1.tar.gz",
    "templates": [
      "/etc/vm.args"
    ],
    "cookie": "riak",
    "start_cmd": "bin/riak start",
    "stop_cmd": "bin/riak stop"
  },
  {...}
]

Arguments

None.

Returns

An array of release objects.

Get information about a release

Retrieve details of a specified release.

Definition

1
GET /api/orch/release/RELEASE_UUID

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/release/952d97dd-c895-4f4a-8261-1f320d0d9ba1"

Response definition

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
  "uuid": "ReleaseUUID",
  "name": "ReleaseName",
  "description": "ReleaseDescription",
  "state": "UPLOADING" or "UPLOADED",
  "path": "PathToTarGz",
  "templates": [
    "TemplateFile"
  ],
  "cookie": "Cookie",
  "start_cmd": "StartCmd",
  "stop_cmd": "StopCmd"
}

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "uuid": "952d97dd-c895-4f4a-8261-1f320d0d9ba1",
  "name": "Riak",
  "state": "UPLOADED",
  "path": "/Users/demo/wombat/rel/wombat/wombat/data/wombat@127.0.0.1/orch/releases/952d97dd-c895-4f4a-8261-1f320d0d9ba1.tar.gz",
  "templates": [
    "/etc/vm.args"
  ],
  "cookie": "riak",
  "start_cmd": "bin/riak start",
  "stop_cmd": "bin/riak stop"
}

Arguments

Argument Description
release UUID Required. The identifier of the release.

Returns

The release object.

Get available node families (Orchestration v1)

Retrieve a list of node families. Note that this request belongs to the Topology service. The following also shows the Orchestration-specific parts of the response.

Definition

1
GET /api/topo/node-family

Example request

1
curl -X GET "http://127.0.0.1:8080/api/topo/node-family"

Response definition

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
[
  {
    "id": "familyId",
    "name": "familyName",
    "description": [ ],
    "node_selection": "random",
    "bootstrap_strategy": [
      "wo_bootstrap_strategy",
      "none",
      [ ]
    ],
    "bootstrap_strategy_opts": [ ],
    "neighbors": [ ],
    "nodes": [ ],
    "plugins_opts": {
      "wo_orch": {
        "release": "Release ID",
        "firewall": [
          {
            "protocol": "Network protocol",
            "port_from": "From port number",
            "port_to": "To port number",
            "sources": ""
          }
        ],
        "domains": [
          {
            "UUID",
            ...
            "opts": {            
              "hwprof": "Hardware profile",
              "vdisk": "Virtual disk ID"
            }
          } 
        ]
      }
    },
    "deleted": Boolean
  },
  {...}
]

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
[
  {
    "id": "fcb0d915-0400-4515-b6f2-fadac756b550",
    "name": "Node family name",
    "description": [],
    "node_selection": "random",
    "bootstrap_strategy": "custom",
    "bootstrap_strategy_opts": {
      "cmd": "bin/bootstrap"
    },
    "neighbors": [],
    "nodes": [
      "78286035-997d-4074-b505-7a5806d75db1",
      "24f31cae-6e72-41d0-8dc9-1d1bdcdd836b",
      "4153af69-7812-4f70-bbc0-2b4f0197b220"
    ],
    "plugins_opts": {
      "wo_orch": {
        "release": "393de6bc-99d7-43c3-a8bd-ac75ba4d70c6",
        "firewall": [
          {
            "protocol": "tcp",
            "port_from": "4369",
            "port_to": "4369",
            "sources": "undefined"
          }
        ],
        "domains": [
          {
            "uuid": "863228a5-771a-4d65-aa78-bc17b8ec942f",
            "provider": "e8a8f99d-dabe-4be0-a1b0-4ba492b42d7d",
            "family": "fcb0d915-0400-4515-b6f2-fadac756b550",
            "ssh_user": "ubuntu",
            "props": [],
            "driver": "wo_orch_ssh_driver",
            "capabilities": [
              {
                "id": "ram_size_mb",
                "type": "value",
                "value": 512
              },
              {
                "id": "disk_size_gb",
                "type": "one_in_range",
                "value": [1, 10]
              }
            ],
            "opts": {
              "hwprof": "t1.micro",
              "vdisk": "ami-0cdf4965"
            }
          }
        ]
      }
    },
    "deleted": false
  }
]

Arguments

None.

Returns

An array of node family objects.

Get available node families (Orchestration v2)

Definition

1
GET /api/orch/node-family

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/node-family"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
[
  {
    "id": "4512b026-e37b-401f-924e-76a2ad00e23b",
    "name": "Riak node family",
    "errors": [],
    "clusterFormed": true,
    "bootstrapNodeId": "968d375b-392a-48cd-9da6-aedf6efe3245",
    "releaseId": "9e522e8e-43bb-43de-80ec-4715ccf71f52",
    "domains": [
      {
        "id": "ac110d14-28bf-496d-8e64-62df69047a1f",
        "providerId": "0336fee8-d8c4-48ba-adfb-50f2e6421107",
        "sshUser": "myuser",
        "capabilities": [],
        "opts":
          {
            "hwprof": "2",
            "vdisk": "598a4282-f14b-4e50-af4c-b3e52749d9f9"
           },
        "state": "configured"
      }
    ],
    "firewallRules": [
      {
        "protocol": "tcp",
        "port_from": "4369",
        "port_to": "4369",
        "sources": null
      },
      {
        "protocol": "tcp",
        "port_from": "8097",
        "port_to": "8099",
        "sources": null
      },
    ],
    "hooks":
      {
        "pre_node_start": [
          {
            "action": "run",
            "executable": "bin/pre-start.sh",
            "location": "node",
            "args": ["start", {"var": "node_name"}]
          }
        ]
      }
  }
]

Arguments

None.

Returns

An array of orchestration node family objects.

Get information about a node family (Orchestration v2)

Definition

1
GET /api/orch/node-family/FAMILY_UUID

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/node-family/4512b026-e37b-401f-924e-76a2ad00e23b"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
{
  "id": "4512b026-e37b-401f-924e-76a2ad00e23b",
  "name": "Riak node family",
  "errors": [],
  "clusterFormed": true,
  "bootstrapNodeId": "968d375b-392a-48cd-9da6-aedf6efe3245",
  "releaseId": "9e522e8e-43bb-43de-80ec-4715ccf71f52",
  "domains": [
    {
      "id": "ac110d14-28bf-496d-8e64-62df69047a1f",
      "providerId": "0336fee8-d8c4-48ba-adfb-50f2e6421107",
      "sshUser": "myuser",
      "capabilities": [
        {
          "id": "cpu_count",
          "type": "value",
          "value": 1
        },
        {
          "id": "packages",
          "type": "all_in_list",
          "value": ["erlang", "python"]
        },
        {
          "id": "disk_gb",
          "type": "one_in_range",
          "value": [10, "no_limit"]
        }
      ],
      "opts":
        {
          "hwprof": "2",
          "vdisk": "598a4282-f14b-4e50-af4c-b3e52749d9f9"
         },
      "state": "configured"
    }
  ],
  "firewallRules": [
    {
      "protocol": "tcp",
      "port_from": "4369",
      "port_to": "4369",
      "sources": null
    },
    {
      "protocol": "tcp",
      "port_from": "8097",
      "port_to": "8099",
      "sources": null
    },
  ],
  "hooks":
    {
      "pre_node_start": [
        {
          "action": "run",
          "executable": "bin/pre-start.sh",
          "location": "node",
          "args": ["start", {"var": "node_name"}]
        }
      ]
    }
}

Arguments

None.

Returns

An orchestration node family object.

Get available domains of a node family

Definition

1
GET /api/orch/node-family/FAMILY_UUID/domain

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/node-family/4512b026-e37b-401f-924e-76a2ad00e23b/domain"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
[
  {
    "state": "configured",
    "uuid": "ac110d14-28bf-496d-8e64-62df69047a1f",
    "provider": "0336fee8-d8c4-48ba-adfb-50f2e6421107",
    "family": "4512b026-e37b-401f-924e-76a2ad00e23b",
    "ssh_user": "myuser",
    "props": [],
    "driver": "undefined",
    "capabilities": [],
    "opts": {
      "vdisk": "598a4282-f14b-4e50-af4c-b3e52749d9f9",
      "hwprof": "2"
    }
  }
]

Arguments

None.

Returns

An array of domain objects.

Get information about a domain

Definition

1
GET /api/orch/node-family/FAMILY_UUID/domain/DOMAIN_ID

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/node-family/4512b026-e37b-401f-924e-76a2ad00e23b/domain/ac110d14-28bf-496d-8e64-62df69047a1f"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
{
  "uuid": "ac110d14-28bf-496d-8e64-62df69047a1f",
  "provider": "0336fee8-d8c4-48ba-adfb-50f2e6421107",
  "family": "4512b026-e37b-401f-924e-76a2ad00e23b",
  "ssh_user": "myuser",
  "props": [],
  "driver": "undefined",
  "capabilities": [],
  "opts": {
    "hwprof": "2",
    "vdisk": "598a4282-f14b-4e50-af4c-b3e52749d9f9"
  },
  "state": "configured"
}

Arguments

None.

Returns

A domain object.

Get available nodes (Orchestration v1)

Retrieve a list of deployed nodes.

Definition

1
GET /api/orch/node

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/node"

Response definition

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[
  {
    "id": "nodeId",
    "name": "nodeName",
    "state": "UP",
    "node_family_id": "familyId",
    "host": "Host",
    "cookie": "Cookie",
    "domain_id": "Domain ID",
    "tref": "Tref",
    "deleted": Boolean,
    "plugin_opts": {
      "wo_orch": {
        "start_cmd": "Start command",
        "stop_cmd": "Stop command",
        "ssh_user": "SSH username",
        "domain": "Domain ID",
        "driver": "Driver"
      }
    }
  },
  {...}
]

Arguments

None.

Returns

An array of node objects.

Get available nodes (Orchestration v2)

Retrieve a list of deployed nodes.

Definition

1
GET /api/orch/node

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/node"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
[
  {
    "id": "4a308dd1-3e69-41d4-9479-e9c7a7f891c0",
    "name": "4a308dd1-3e69-41d4-9479-e9c7a7f891c0@127.0.0.1",
    "nodeFamilyId": "dc5f2396-6b93-4601-a9a2-fb79ee553526",
    "cookie": "riak",
    "state": "STOPPED",
    "orchState": "stopped",
    "errors": [],
    "inCluster": false,
    "host": "127.0.0.1",
    "sshUser": "myuser",
    "startCmd": "bin/riak start",
    "stopCmd": "bin/riak stop",
    "domainId": "55fab803-c94d-48c0-9179-76bd9e02d5fc",
    "domainOpts": {},
    "providerId": "8bae64d7-0b7d-49e7-8aa3-fac6ef5e0683",
    "familyHooks": {},
    "hooks": {},
    "driver": "wo_orch_ssh_driver"
  },
  {
    "id": "9e272fde-1881-416f-84b9-88b8e0314790",
    "name": "9e272fde-1881-416f-84b9-88b8e0314790@127.0.0.1",
    "nodeFamilyId": "dc5f2396-6b93-4601-a9a2-fb79ee553526",
    "cookie": "riak",
    "state": "UP",
    "orchState": "started",
    "errors": [],
    "inCluster": false,
    "host": "127.0.0.1",
    "sshUser": "myuser",
    "startCmd": "bin/riak start",
    "stopCmd": "bin/riak stop",
    "domainId": "55fab803-c94d-48c0-9179-76bd9e02d5fc",
    "domainOpts": {},
    "providerId": "8bae64d7-0b7d-49e7-8aa3-fac6ef5e0683",
    "familyHooks": {},
    "hooks": {},
    "driver": "wo_orch_ssh_driver"
  }
]

Arguments

None.

Returns

An array of node objects.

Get information about a node (Orchestration v2)

Retrieve a list of deployed nodes.

Definition

1
GET /api/orch/node/NODE_UUID

Example request

1
curl -X GET "http://127.0.0.1:8080/api/orch/node/4a308dd1-3e69-41d4-9479-e9c7a7f891c0"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{
  "id": "4a308dd1-3e69-41d4-9479-e9c7a7f891c0",
  "name": "4a308dd1-3e69-41d4-9479-e9c7a7f891c0@127.0.0.1",
  "nodeFamilyId": "dc5f2396-6b93-4601-a9a2-fb79ee553526",
  "cookie": "riak",
  "state": "STOPPED",
  "orchState": "stopped",
  "errors": [],
  "inCluster": false,
  "host": "127.0.0.1",
  "sshUser": "myuser",
  "startCmd": "bin/riak start",
  "stopCmd": "bin/riak stop",
  "domainId": "55fab803-c94d-48c0-9179-76bd9e02d5fc",
  "domainOpts": {},
  "providerId": "8bae64d7-0b7d-49e7-8aa3-fac6ef5e0683",
  "familyHooks": {},
  "hooks": {},
  "driver": "wo_orch_ssh_driver"
}

Arguments

None.

Returns

A node object.

Register provider

Register a cloud provider in WombatOAM.

Definition

1
POST /api/orch/provider

Data

Request body for a physical provider

1
2
3
4
5
{
  "name": "Provider name",
  "servers": ["127.0.0.1", "127.0.0.2"],
  "type": "physical"
}

Request body for Amazon EC2

1
2
3
4
5
6
7
{
  "name": "Provider name",
  "username": "Amazon EC2 API key (generated on the Amazon web dashboard)",
  "password": "Amazon EC2 API code (same)",
  "type": "virtual",
  "vprovider": "ec2"
}

Request body for the HP Cloud

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
{
  "name": "Provider name",
  "username": "HP Cloud username",
  "password": "HP Cloud password",
  "type": "virtual",
  "vprovider": "hp",
  "auth_url": "https://region-a.geo-1.identity.hpcloudsvc.com:35357/v2.0/tokens",
  "tenant_name": "Project name (shown on the HP Cloud web dashboard)",
  "service_region": "region-b.geo-1"
}

Request body for Rackspace

1
2
3
4
5
6
7
8
{
  "name": "Provider name",
  "username": "Username",
  "password": "Password",
  "type": "virtual",
  "vprovider": "rackspace",
  "service_region": "lon"
}

Example request

The following example adds an Amazon EC2 provider.

1
2
3
curl -X POST "http://127.0.0.1:8080/api/orch/provider" \
     -H "Content-Type: application/json" \
     -d "{\"name\":\"EC2\", \"username\":\"AKIAIVCYOGNE25F7VB3A\", \"password\":\"GAQXqfvsIgEaIjR470OAdztbNAsOQ2UrKbM8bqg7\", \"type\":\"virtual\", \"vprovider\":\"ec2\"}"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
{
  "uuid": "d010c157-dd36-4990-b894-eeccce873c09",
  "name": "EC2",
  "type": "ec2",
  "driver": "wo_orch_elibcloud_driver",
  "opts": {
    "name": "EC2",
    "username": "AKIAIVCYOGNE25F7VB3A",
    "password": "GAQXqfvsIgEaIjR470OAdztbNAsOQ2UrKbM8bqg7",
    "type": "virtual",
    "vprovider": "ec2"
  }
}

Arguments

Details are provided in the request bodies for the various providers, above.

Returns

The provider object.

Upload release

Upload a release to WombatOAM.

Definition

1
POST /api/orch/release

Data

1
2
3
4
5
6
7
8
9
{
  "name": "Name",
  "description": "Description",
  "start_cmd": "bin/riak start",
  "stop_cmd": "bin/riak stop",
  "cookie":"riak",
  "node_name_templates": ["/etc/vm.args"],
  "release": "release.tar.gz encoded with base64"
}

Example request

1
2
3
curl -X POST "http://127.0.0.1:8080/api/orch/release" \
     -H "Content-Type: application/json" \
     -d "{\"name\":\"Riak\", \"description\":\"Riak release\", \"start_cmd\":\"bin/riak start\", \"stop_cmd\":\"bin/riak stop\", \"cookie\":\"riak\", \"node_name_templates\":[\"/etc/vm.args\"], \"release\":\"H4sIAE3f7FMAA+3POxKCQBAFQI6yR9gPsOchWMqyiEDvLyoakpF1J6+m5gUza1vatLXuSjHGse/DO+s4fDLm7/wTUi61pKGWXENMOY1DF+KlVx2e22Na91Nu9/PeXpvnk/3xxz8BAAAAAAAAAADgQi8yDLTBACgAAA==\"}"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
{
  "uuid": "952d97dd-c895-4f4a-8261-1f320d0d9ba1",
  "name": "Riak",
  "state": "UPLOADING",
  "path": "/Users/hj/wombat/rel/wombat/wombat/data/wombat@127.0.0.1/orch/releases/952d97dd-c895-4f4a-8261-1f320d0d9ba1.tar.gz",
  "templates": [
    "/etc/vm.args"
  ],
  "cookie": "riak",
  "start_cmd": "bin/riak start",
  "stop_cmd": "bin/riak stop"
}

Arguments

Argument Description
name Required. A custom string with which to identify the release.
description Optional. A custom string that can contain a more detailed description about the release.
start_cmd Required. WombatOAM will use this command to start the release once deployed.
stop_cmd Required. WombatOAM will use this command to stop the release.
cookie Required. The Erlang cookie that WombatOAM will use to connect to the deployed node.
node_name_templates Required. The path to the vm.args file within the release archive.
release Required. The release archive encoded in Base64.

Returns

A release object. Note that the response is returned before the release is ready to be used (after copying, WombatOAM will perform some preparations on it). Before using a release (e.g. specifying it when creating a node family), use GET /api/orch/release to check that its status is UPLOADED (as opposed to UPLOADING).

Create node family (Orchestration v1)

Create a node family, which can deploy a certain release to certain providers. In Orchestration v1, the node family can be created using the Topology API.

Definition

1
POST /api/topo/node-family

Data

1
2
3
4
5
6
{
  "name": "Node family name",
  "bootstrap_node_selection": "random",
  "bootstrap_strategy": "custom",
  "bootstrap_strategy_opts": [{"cmd": "bin/bootstrap"}]
}

Example request

1
2
3
curl -X POST "http://127.0.0.1:8080/api/topo/node-family" \
     -H "Content-Type: application/json" \
     -d "{\"name\":\"Riak Cluster\", \"bootstrap_node_selection\":\"random\", \"bootstrap_strategy\":\"custom\", \"bootstrap_strategy_opts\":[{\"cmd\": \"bin/bootstrap\"}]}"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
{
  "id": "281a6ed1-e878-4ec0-8250-9355d9d17ec5",
  "name": "Riak Cluster",
  "description": [],
  "node_selection": "random",
  "bootstrap_strategy": "custom",
  "bootstrap_strategy_opts": {
    "cmd": "bin/bootstrap"
  },
  "neighbors": [],
  "nodes": [],
  "plugins_opts": [],
  "deleted": false
}

Arguments

Argument Description
name Required. A custom string with which to identify the node family.
bootstrap_node_selection Required. When a new node joins a cluster, its bootstrap script gets another node as a parameter. This field defines how to select that other node. Currently the only option is random, which means that a random node is selected.
bootstrap_strategy Required. Determines what WombatOAM should do when it deploys a new node to a node family. The available options are distributed erlang, sd erlang and custom. With custom, you can specify a script to be executed in bootstrap_strategy_opts.
bootstrap_strategy_opts Optional. Specify what should happen when a new node is deployed into a node family. For example, to execute the script bin/bootstrap (included in the release archive), specify "cmd":"bin/bootstrap".

Returns

A node family object.

Create node family (Orchestration v2)

Create a node family, which can deploy a certain release to certain providers. In Orchestration v2, there is no "bootstrap strategy", so creating a node family is simpler than in v1.

Definition

1
POST /api/orch/node-family

Data

1
2
3
{
  "name": "Node family name"
}

Example request

1
2
3
curl -X POST "http://127.0.0.1:8080/api/orch/node-family" \
     -H "Content-Type: application/json" \
     -d "{\"name\":\"Riak Cluster\"}"

Example response

1
2
3
4
{
  "id": "281a6ed1-e878-4ec0-8250-9355d9d17ec5",
  "name": "Riak Cluster"
}

Arguments

Argument Description
name Required. A custom string with which to identify the node family.

Returns

A node family object.

Attach release to a node family

Connect a node family with a release.

Definition

1
POST /api/orch/node-family/FAMILY_UUID/release

Data

1
2
3
{
  "release": "Release UUID"
}

Example request

1
2
3
curl -X POST "http://127.0.0.1:8080/api/orch/node-family/281a6ed1-e878-4ec0-8250-9355d9d17ec5/release" \
     -H "Content-Type: application/json" \
     -d "{\"release\":\"952d97dd-c895-4f4a-8261-1f320d0d9ba1\"}"

Example response

200 OK

Arguments

Argument Description
family ID Required. The identifier of the node family.
release Required. The identifier of the release to be deployed on the nodes in the node family.

Returns

The HTTP status code only.

Set firewall configuration for a node family

Set the firewall rules that define network ports to be open on the virtual machine instances in the node family.

Definition

1
POST /api/orch/node-family/FAMILY_UUID/firewall

Data

The request body is an array that contains one or more rule objects.

1
2
3
4
5
6
7
8
[
  {
    "protocol": "tcp",
    "port_from": "4369",
    "port_to": "4369"
  },
  {...}
]

Example request

1
2
3
curl -X POST "http://127.0.0.1:8080/api/orch/node-family/fcb0d915-0400-4515-b6f2-fadac756b550/firewall" \
     -H "Content-Type: application/json" \
     -d "[{\"protocol\":\"tcp\", \"port_from\":\"4369\", \"port_to\":\"4369\"}]"

Example response

200 OK

Arguments

Argument Description
family ID Required. The identifier of the node family.
protocol Required. The protocol whose network traffic to filter with this firewall rule. The options are "tcp" and "udp".
port_from Required. The first in the range of port numbers to which to apply this rule.
port_to Required. The first in the range of port numbers to which to apply this rule.

Response

The HTTP status code only.

Set node hooks for a node family

Replace the set of hooks defined for a node family.

Definition

1
POST /api/orch/node-family/FAMILY_UUID/hook

Data

1
2
3
{
  "node_hooks": NodeHooks
}

Example request

1
2
3
curl -X POST "http://127.0.0.1:8080/api/orch/node-family/20718a06-3643-4d93-b291-48c08b761ce5/hook" \
     -H "Content-Type: application/json" \
     -d '{"node_hooks": {"pre_node_start": [{"action": "run", "executable": "ls", "location": "node"}]}}'

Example response

200 OK

Arguments

Argument Description
node_hooks Required An object describing which hooks shall be called on which occasions. See the detailed explanation and specification in the "Node hooks" section.

Returns

The HTTP status code only.

Add deployment domains to a node family

Add a deployment domain to a node family. A deployment domain is a part of the node family which uses the same provider with the same virtual image and hardware profile. When a node is deployed to a node family, it is actually deployed into a domain.

If the domain is a cloud domain (i.e. it will deploy nodes on hosts requested from a cloud provider like Amazon EC2, HP Cloud or Rackspace), then an SSH key and possibly a security group are created on the cloud provider during the execution of this request.

In Orchestration v2, the domain object has a "configured" field. The domain is ready to be used when that field is set to "true". The node family can still receive commands about node deployments, and the deployments will automatically start once the domain to be used has been configured.

Definition

1
POST /api/orch/node-family/FAMILY_UUID/domain

Data

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  // Mandatory fields
  "provider": <ProviderUUID>,
  "ssh_user": <SSHUser>,
  "vdisk": <VirtualDiskID>,
  "hw_profile": <HardwareProfile>,
  "type": "virtual" OR "physical",

  // Optional fields
  "capabilities": [
       {"id": <CapabilityIdentifier>,
        "type": "value" OR "all_in_list" OR "one_in_list" OR "all_in_range" OR
                "one_in_range",
        "value": <CapabilityValue>},
       {...}
      ]
}

Example request body

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
  "provider": "e8a8f99d-dabe-4be0-a1b0-4ba492b42d7d",
  "ssh_user": "ubuntu",
  "vdisk": "ami-0cdf4965",
  "hw_profile": "t1.micro",
  "type": "virtual",
  "capabilities": [
       {"id": "ram_size_mb", "type": "value", "value": 512},
       {"id": "disk_size_gb", "type": "one_in_range", "value": [10000, 100000]}
  ]
}

Note: The vdisk and hw_profile fields are not used for physical providers.

Example request

1
2
3
curl -X POST "http://127.0.0.1:8080/api/orch/node-family/fcb0d915-0400-4515-b6f2-fadac756b550/domain" \
     -H "Content-Type: application/json" \
     -d "{\"provider\":\"e8a8f99d-dabe-4be0-a1b0-4ba492b42d7d\", \"ssh_user\":\"ubuntu\", \"vdisk\":\"ami-0cdf4965\", \"hw_profile\":\"t1.micro\", \"type\":\"virtual\", \"capabilities\": [{\"id\":\"ram_size_mb\", \"type\":\"value\", \"value\":512}, {\"id\":\"disk_size_gb\", \"type\":\"one_in_range\", \"value\": [10000, 100000]}]}"

Example response

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
{
  "uuid": "d8f3bafd-d37f-4981-9c32-e89761388b89",
  "provider": "09ec86ae-bfe5-4010-b37b-8d0c26b569fe",
  "family": "dc3f8e09-d9b0-4d79-94c6-fec3e2bf8cf2",
  "ssh_user": "ubuntu",
  "props": [],
  "driver": "wo_orch_ssh_driver",
  "capabilities": [["wo_orch_capability","ram_size_mb","value",512],
                   ["wo_orch_capability","disk_size_gb","one_in_range","\u0001\u0002"]],
  "opts":[]
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{
  "uuid": "e5ac62f4-5ed3-48f1-ae4a-6a281dc20f57",
  "provider": "e8a8f99d-dabe-4be0-a1b0-4ba492b42d7d",
  "family": "9542cf8a-192b-4e36-a84c-9959ad8396b4",
  "ssh_user": "ubuntu",
  "props": [],
  "driver": "wo_orch_ssh_driver",
  "capabilities": [
    {
      "id": "ram_size_mb",
      "type": "value",
      "value": 512
    },
    {...}
  ],
  "opts": {
    "hwprof": "t1.micro",
    "vdisk": "ami-0cdf4965"
  }
}

Note: Ranges are converted into JSON in a weird way. This will be fixed in the future.

Arguments

Argument Description
family ID Required. The identifier of the node family.
provider Required. The identifier of the provider.
provider Required. The infrastructure provider used by the domain. Each domain uses one provider.
ssh_user Required. The user with which WombatOAM can SSH into virtual machine instances created by this provider.
vdisk Required. Virtual disk. The system image that should be placed in the virtual machine instance.
hw_profile Required. The hardware profile of the virtual machine instances. Different providers use different terminology: Amazon calls them instance types; OpenStack, HP Cloud and Rackspace calls them flavors; Libcloud calls them sizes.
type Required. "virtual" or "physical".
capabilities Optional. An array of objects with the following properties: id, type ("value", "all_in_list", "one_in_list", "all_in_range" or "one_in_range"), and value. The possible type of value field depends on the value of the type field. If type is "value", then value can be any JSON value. If type is "all_in_list" or "one_in_list", then value should be a list of JSON values. If type is "all_in_range" or "one_in_range", then value should be a list with two elements, a minimum and a maximum. Both can be either a number or the string "no_limit", which stands for minus infinity when used as the minimum, and stands for plus infinity when used as the maximum.

The behaviour of capabilities is described in detail in a document called Capability-matching Heterogeneous deployment of a Load Testing Tool.

Returns

A deployment domain object.

Deploy a node

Deploy nodes to the configured providers.

Definition

1
POST /api/orch/node-family/FAMILY_UUID/node

Data

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
{
  // Mandatory fields
  "amount": NumberOfNodesToBeDeployed,

  // Optional fields
  "autostart": Boolean,
  "autojoin": Boolean,  // Only for Orchestration v2
  "demands": [
       {"id": "CapabilityIdentifier",
        "type": "value" OR "all_in_list" OR "one_in_list" OR "all_in_range" OR
                "one_in_range",
        "value": "CapabilityValue",
        "nature": "mandatory" OR "optional"}
  ],
  "node_name_base_template": TemplateString,
  "node_hooks": NodeHooks
}

Request body example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  "amount": 2,
  "autostart": true,
  "demands": [
       {"id": "ram_size_mb",
        "type": "value",
        "value": 512,
        "nature": "mandatory"},
       {"id": "provider",
        "type": "value",
        "value": "dc3f8e09-d9b0-4d79-94c6-fec3e2bf8cf2",
        "nature": "optional"}
  ],
  "node_name_base_template": "mynode-{{index}}",
  "node_hooks": {
       // When the node is started, run the node-started script with the node
       // name as the only argument.
      "post_node_start": [
          {"action": "run",
           "executable": "/home/user/node-started.sh",
           "location": "wombat",
           "args": [{"var": "node_name"}]}]
  }
}

Example request

1
2
3
curl -X POST "http://127.0.0.1:8080/api/orch/node-family/fcb0d915-0400-4515-b6f2-fadac756b550/node" \
     -H "Content-Type: application/json" \
     -d "{\"amount\": 2, \"autostart\": true, \"demands\": [{\"id\":\"ram_size_mb\", \"type\":\"value\", \"value\": 512, \"nature\":\"mandatory\"}, {\"id\":\"provider\", \"type\":\"value\", \"value\":\"dc3f8e09-d9b0-4d79-94c6-fec3e2bf8cf2\", \"nature\":\"optional\"}]}"

Example response (Orchestration v1)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
[
  {
    "id": "d1821de5-f300-4148-beff-a87f85743019",
    "name": "undefined",
    "node_family_id": "dc3f8e09-d9b0-4d79-94c6-fec3e2bf8cf2",
    "host": "undefined",
    "cookie": "undefined",
    "domain_id": "undefined",
    "state": "UNINIT",
    "tref": "undefined",
    "deleted": false,
    "plugins_opts": []
  },
  {
    "id": "1dd0ffd6-137b-4437-9031-e9fda8780610",
    "name": "undefined",
    "node_family_id": "dc3f8e09-d9b0-4d79-94c6-fec3e2bf8cf2",
    "host": "undefined",
    "cookie": "undefined",
    "domain_id": "undefined",
    "state": "UNINIT",
    "tref": "undefined",
    "deleted": false,
    "plugins_opts": []
   }
]

Example response (Orchestration v2)

In case of success, the ids of the new nodes is returned (with status code 200):

1
2
3
4
[
  "72dbc9ef-429d-4a58-b324-5e36da8b5940",
  "a98b9a55-1459-4c01-8021-ad99c1c9c657"
]

In case of error, the error is returned (with status code 400):

1
2
3
[
{"error":"no_satisfying_domain_found"}
]

Arguments

Argument Description
family UUID Required. The identifier of the node family to deploy the node into.
amount Required. The number of nodes to deploy.
autostart Optional. Boolean. If true, WombatOAM will not only copy the release archive file to the instances, but it will also start the nodes.
autojoin Optional. Boolean. If true, WombatOAM will not only start the nodes but make them join into a cluster.
demands Optional. An array of objects describing capabilities, each with the following properties: id, type, value, and nature. The objects might also have the following priority: maximize_method (default: match), priority (default: 0) and multiplier (default: 1).
node_name_base_template Optional. A string from which the base name of the nodes is calculated. See the detailed explanation below.
node_hooks Optional An object describing which hooks shall be called on which occasions. See the detailed explanation and specification below in the "Node hooks" section.

The behaviour of demands is described in detail in a document called Capability-matching Heterogeneous deployment of a Load Testing Tool.

Returns

In case of Orchestration v1: The list of nodes for which the deployment process was started. This may be less than the number of nodes requested. If no nodes were deployed because the deployment demands weren't satisfied by any domain, the response is an empty list.

In case of Orchestration v2: The ids of the nodes for which the deployment process was started. There are always the same amount of nodes that the user asked for -- i.e. the deployment is started for either all nodes or none of them. In the latter case (if the deployment demands weren't satisfied by any domain, or the licence doesn't allow the number of nodes the user wanted to start), an error JSON is reported.

Node name base templates

When deploying a set of nodes with WombatOAM, the user may specify a node name base template. The actual node names are generated from this template. E.g. if the template is node-{{index}}, and 3 nodes are deployed on hostA, hostB and hostC, then the names of the nodes will be node-1@hostA, node-2@hostB and node-3@hostC.

The node name base template might contain some patterns which are expanded. All other characters will go into the node names unmodified. The following patterns are accepted:

  • {{node_id}}: Will be replaced with the identifier of the node.

  • {{index}}: When the user deploys N nodes, this pattern is replaced with the index of the node (which goes from 1 to N by default). So if e.g. 3 nodes are deployed with template node-{{index}}, the generated node name bases will be node-1, node-2 and node-3.

  • {{index PADDING}}, e.g. {{index 4}}: Similar to {{index}}, but the index will always contain at least PADDING characters, padded with zeroes. So e.g. node-{{index 4}} might become node-0001.

  • {{startindex DIGITS}}, e.g. {{startindex 20}}: This is a global setting for the template, which specifies the first index to be used. So if e.g. 3 nodes are deployed with the template node-{{index}}{{startindex 20}}, then the generated node name bases will be node-20, node-21 and node-22.

The default node name base is {{node_id}}.

Node hooks

When deploying a set of nodes with WombatOAM, the user may specify a set of actions that need to be executed before/after certain events happen. Each such occasion where WombatOAM is able to execute a list of custom actions is called a hook.

This section starts with explaining hooks with examples. The "Specifying the hooks and actions to WombatOAM" subsection contains the exact specification of how hooks can be defined to WombatOAM.

Hooks

There are six hooks: pre_node_start, post_node_start, pre_node_stop, post_node_stop, join and leave. Their names describe when they fire, e.g. the actions assigned to the pre_node_start hook will be executed when the user issues WombatOAM to start a node, but before it is actually started. Both families and nodes may have actions assigned to hooks.

Note that these are all "node hooks", even those that are assigned to the family, so they fire when any node of the family is started or stopped, and not when the family itself is created or deleted.

Starting and stopping nodes

When a node is started, the actions are executed in the following order:

  • pre_node_start hook actions that are assigned to the family of the node.
  • pre_node_start hook actions that are assigned to the node.
  • The node is started by executing the start command.
  • post_node_start hook actions that are assigned to the family of the node.
  • post_node_start hook actions that are assigned to the node.

When a node is stopped, the actions are executed in the following order:

  • pre_node_stop hook actions that are assigned to the node.
  • pre_node_stop hook actions that are assigned to the family of the node.
  • The node is stopped by executing the stop command.
  • post_node_stop hook actions that are assigned to the node.
  • post_node_stop hook actions that are assigned to the family of the node.

When multiple nodes are deployed, this is performed in parallel, so the order of hooks running on different nodes is not deterministic (they may happen to run actually in parallel).

Nodes joining and leaving the cluster (in Orchestration v2)

When a node joins a cluster, the actions are executed in the following order:

  • join hook actions that are assigned to the family of the node.
  • join hook actions that are assigned to the node.

When a node leaves the cluster, the actions are executed in the following order:

  • leave hook actions that are assigned to the node.
  • leave hook actions that are assigned to the family of the node.

Note that there is no "join command" or "leave command", so these hooks are themselves responsible for asking the nodes to join/leave the cluster, and return only when that operation has finished.

The user may specify the "autojoin" option when deploying the nodes. In that case, when the first node of the node family is started, it will be appointed as the "bootstrap" node, and it will be declared a part of the cluster without executing anything. For each successive node that is started, the "join" is performed towards the bootstrap node (i.e. the join hooks are executed with the bootstrap_node_id and bootstrap_node_name variables set accordingly). The "join" operations are performed sequentially (i.e. join for a node is started only if the join for the previous node has been finished).

Note that in the future, it should be possible to initiate a node joining/leaving the cluster by sending a REST request, but these are not yet implemented. So the only way to get a node join a cluster is to use "autojoin", and there is no way to make a node leave a cluster.

Actions

There are three kinds of actions: run, call and send_file.

In each case, the output of the actions is logged in WombatOAM's debug log.

If the action shall be executed on a node, and the node is not (yet) available, then the action is retried (10 times by default, with waiting 30 seconds between retries).

"Run" action

This action runs a program (either a script or an executable binary). The following options are available:

  • executable (mandatory): The path to the file that should be executed. If the script is executed on the node, this path can be either absolute or relative to the release directory (~/<node_id>/). If it is executed on WombatOAM, it shall be absolute.
  • location (mandatory): Whether the script should be executed on the WombatOAM host or the managed node's host.
  • args (optional): The arguments to be passed to the executable. Each argument can be either a string (which is passed unmodified), the variable node_id or node_name (whose value is passed) or a concatenation of strings and variables. In case of the "join" and "leave" hooks, the variables bootstrap_node_id and bootstrap_node_name can also be used.

Running a script on a remote node is performed using SSH.

As an example, if the following action is executed on node with id d010c157-dd36-4990-b894-eeccce873c09 and name mynode@127.0.0.1

1
2
3
4
5
6
7
8
9
{"action": "run",
 "executable": "script.sh",
 "location": "node",
 "args": ["node started",
          {"var": "node_id"},
          "--log-dir",
          {"concat": [{"var": "node_id"},
                      "/log/",
                      {"var": "node_name"}]}]}

then the following will be executed:

1
2
script.sh "node started" d010c157-dd36-4990-b894-eeccce873c09 \
          --log-dir d010c157-dd36-4990-b894-eeccce873c09/log/mynode@127.0.0.1

The return code of the script is checked and if it is not zero, the execution is considered to be failed and further actions on the node are cancelled.

"Call" action

This action calls an Erlang function. The following options are available:

  • mod_name, fun_name (mandatory): The module and name of the function to be called.
  • location (mandatory): Whether the function should be called on the WombatOAM node or the managed node.
  • args (optional): The arguments to be passed to the function. Each argument can be either a term (which is passed unmodified after being parsed from the JSON string) or the variable node_id or node_name (whose value is passed). In case of the "join" and "leave" hooks, the variables bootstrap_node_id and bootstrap_node_name can also be used.

Calling a function on a remote node is performed using Erlang RPC.

As an example, if the following action is executed on node with id d010c157-dd36-4990-b894-eeccce873c09 and name mynode@127.0.0.1

1
2
3
4
5
6
7
8
{"action": "call",
 "mod_name": "mymod",
 "fun_name": myfun",
 "location": "node",
 "args": ["node_start",
          "{1, [2,3]}",
          {"var": "node_name"},
          {"var": "node_id"}]}

then the following function call will be executed:

1
2
3
4
mymod:myfun(node_start,
            {1, [2, 3]},
            'mynode@127.0.0.1',
            "d010c157-dd36-4990-b894-eeccce873c09").

In order to execute an Erlang function on WombatOAM, WombatOAM needs to find the containing module. To do that, the directory that contains the compiled version of the module shall be added to the "wo_orch/hook_dirs" option. For example:

1
2
3
 {wo_orch, [
            {hook_dirs, ["/home/user/my_wombat_hook_dir"]}
           ]}

In order to execute an Erlang function on the deployed node, the creator of the release package needs to make sure that the node will find the module.

Since Erlang functions on the node can be executed only when the node is running, "call" actions on nodes should not be specified in pre_node_start and post_node_stop hook.

"Send file" action

This action copies a file from WombatOAM to the node's host machine. The following options are available:

  • source (mandatory): The path to the file to be copied on the WombatOAM host. It is recommended to use an absolute path.
  • target (mandatory): The path that the file shall have on the target machine, or the directory into which it should be copied. It can be either relative or absolute. In the latter case, it is relative to the node's main directory (which is ~/<node_id>).

Copying a file to the node is performed using SCP.

Specifying the hooks and actions to WombatOAM

The exact structure of the NodeHooks JSON object is the following:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
NodeHooks =
{
  // All fields are optional
  "pre_node_start": [HookAction],
  "post_node_start": [HookAction],
  "pre_node_stop": [HookAction],
  "post_node_stop": [HookAction],
  "join": [HookAction],
  "leave": [HookAction]
}

HookAction =
    RunHookAction OR   // Hook that runs a script
    CallHookAction OR  // Hook that calls an Erlang function
    SendFileHookAction // Hook that copies a file to the node

RunHookAction =
{
  // Mandatory fields
  "action": "run",
  "executable": "PathToScript",
  "location": "wombat" OR "node",

  // Optional fields
  "args": [RunArg]
}

RunArg =
    "ArgString" OR
    {"var": "node_id"} OR
    {"var": "node_name"} OR
    {"concat": [RunArg]}

CallHookAction =
{
  // Mandatory fields
  "action": "call",
  "mod_name": "ModuleName",
  "fun_name": "FunctionName",
  "location": "wombat" OR "node",

  // Optional fields
  "args": [CallArg]
}

CallArg =
  // Note that a term shall be specified as a JSON string, not as a JSON
  // object. E.g. "[1, 2]" as opposed to simply [1, 2].
  "ErlangTerm" OR

  {"var": "node_id"} OR
  {"var": "node_name"}

SendFileHookAction =
{
  "action": "send_file",
  "source": "PathToSourceFileOrDir",
  "target": "PathToTargetFileOrDir"
}

Upload file to a node (deprecated - only Orchestration v1)

Upload a file to a specified location on a node.

This feature is deprecated and will be removed. If you wish to upload files to the nodes, ask the hostnames from WombatOAM and use scp.

Definition

1
POST /api/orch/node/NODE_UUID/upload-file

Data

1
2
3
4
{
  "path": "TARGET_FILE_PATH",
  "content": CONTENT
}

Example response

200 OK

Arguments

Argument Description
path Required. The location on the target node to which the file will be copied.
content Required. The base64-encoded version of the content of the file to be uploaded.

Returns

The HTTP status code only.

Unregister provider

Remove an infrastructure provider from the list of available providers.

Definition

1
DELETE /api/orch/provider/PROVIDER_UUID

Example request

1
curl -X DELETE "http://127.0.0.1:8080/api/orch/provider/a9ccf27a-056a-4f5a-9112-abaab9c35602"

Example response

200 OK

Arguments

Argument Description
provider UUID Required. The identifier of the infrastructure provider.

Returns

The HTTP status code only.

Delete release

Delete a release.

Definition

1
DELETE /api/orch/release/RELEASE_UUID

Example request

1
curl -X DELETE "http://127.0.0.1:8080/api/orch/release/8827fe5a-e392-4c1d-8c55-2594c88685ce"

Example response

200 OK

Arguments

Argument Description
release UUID Required. The identifier of the release.

Returns

The HTTP status code only.

Delete family (Orchestration v1)

Delete a node family (using the Topology API).

Definition

1
DELETE /api/topo/node-family/FAMILY_UUID

Example request

1
curl -X DELETE "http://127.0.0.1:8080/api/topo/node-family/131bb0f3-72ab-4bfb-a00d-4a6f171607ab"

Example response

200 OK

Arguments

Argument Description
family UUID Required. The identifier of the node family.

Returns

The HTTP status code only.

Delete family (Orchestration v2)

Delete a node family (using the Orchestration API). This includes releasing all resources associated with the deployment domains in the cloud (SSH keys and security groups).

If the family has nodes, an error is returned.

Definition

1
DELETE /api/orch/node-family/FAMILY_UUID

Example request

1
curl -X DELETE "http://127.0.0.1:8080/api/orch/node-family/131bb0f3-72ab-4bfb-a00d-4a6f171607ab"

Example response

200 OK

Arguments

Argument Description
family UUID Required. The identifier of the node family.

Returns

The HTTP status code only.

Terminate family (Orchestration v2)

Delete a node family (using the Orchestration API). If the family has nodes, terminate them.

Definition

1
DELETE /api/orch/node-family/FAMILY_UUID/brutal

Example request

1
curl -X DELETE "http://127.0.0.1:8080/api/orch/node-family/131bb0f3-72ab-4bfb-a00d-4a6f171607ab/brutal"

Example response

200 OK

Arguments

Argument Description
family UUID Required. The identifier of the node family.

Returns

The HTTP status code only.

Terminate a node

Terminate a deployed node. If the node is running in the cloud, this includes releasing the host machine.

Definition

1
DELETE /api/orch/node/NODE_UUID

Example request

1
curl -X DELETE "http://127.0.0.1:8080/api/orch/node/b15cc69d-bd38-4a96-affc-e6884df18d2b"

Example response

200 OK

Arguments

Argument Description
family UUID Required. The identifier of the deployed node.

Returns

The HTTP status code only.