11.2. Create an Application

Description

Create a new application. Note that if the specified domain does not exist when attempting to create an application, a domain is automatically created. See Section 7.1, “Create a Domain” for more information on how to create a domain.

Method and URL Structure

Method URL Structure
POST /broker/rest/domain/:domain_name/applications

Request Parameters

Name Description Required Default
name Name of application Yes
cartridges Add cartridges to the application by specifying an array of one or more cartridges, using the name or unique ID No
template UUID of application template No
scale Mark application as scalable No false
gear_size Cartridge gear size No small
initial_git_url URL to Git source code repository that is the basis for this application No
cartridges[][name] Name of cartridge No
cartridges[][gear_size] Gear size of each individual cartridge. If gear_size is not specified, default gear size is used depending on user input No
cartridges[][url] URL to a downloadable cartridge; multiple URLs can be specified No
environment_variables Add or update application environment variables No
region Restrict the application to the specified region No

Note

Valid cartridge options may be different based on your OpenShift Enterprise deployment.

See Section A.6, “Applications” for more information about the valid options applicable to these request parameters.
Request

{
  "name": "myapp",
  "cartridges": "ruby-2.0",
  "scale": "true",
  "gear_size": "small",
  "initial_git_url": ""
}

cURL Command Example

$ curl -X POST https://openshift.redhat.com/broker/rest/domain/mydomain/applications --user user@example.com:password --data-urlencode name=myapp --data-urlencode cartridges=ruby-2.0 --data-urlencode scale=true --data-urlencode gear_size=small

In the previous cURL command example, the gear_size parameter is applied to all cartridges that are added to the specified application. However, the following cURL command example shows how to apply the gear_size parameter to individual cartridges when adding multiple cartridges to an application.
$ curl -X POST https://openshift.redhat.com/broker/rest/domain/mydomain/applications --user user@example.com:password --data-urlencode name=mysecondapp --data-urlencode cartridges=[][name]=jbosseap-6 --data-urlencode cartridges[][gear_size]=medium --data-urlencode cartridges[][name]=mysql-5.5 --data-urlencode cartridges[][gear_size]=small
JSON Response

The API returns information about the newly created application with related resource links which have been left out for brevity. See Chapter 11, Applications for more information on all application parameters.

{
  "api_version": 1.6,
  "data": {
    "aliases": [

    ],
    "app_url": "http://myapp-mydomain.rhcloud.com/",
    "build_job_url": null,
    "building_app": null,
    "building_with": null,
    "creation_time": "2013-08-21T01:58:41Z",
    "domain_id": "mydomain",
    "embedded": {
      "haproxy-1.4": {
      }
    },
    "framework": "ruby-2.0",
    "gear_count": 1,
    "gear_profile": "small",
    "git_url": "ssh://534253991015616165707776@myapp-mydomain.rhcloud.com/~/git/myapp.git/",
    "health_check_path": "health",
    "id": "534253991015616165707776",
    "initial_git_url": null,
    "members": [
      {
        "explicit_role": null,
        "from": [
          {
            "type": "domain",
            "role": "admin"
          }
        ],
        "id": "5213a826e499b22f15000001",
        "name": "user@example.com",
        "owner": true,
        "role": "admin",
        "type": "user"
      }
    ],
    "name": "myapp",
    "scalable": true,
    "ssh_url": "ssh://534253991015616165707776@myapp-mydomain.rhcloud.com"
  },
  "messages": [
    {
      "exit_code": 0,
      "field": null,
      "severity": "info",
      "text": "Application myapp was created."
    },
    {
      "exit_code": 0,
      "field": null,
      "severity": "warning",
      "text": "HAProxy instance is started\n"
    }
  ],
  "status": "created",
  "supported_api_versions": [
    1.0,
    1.1,
    1.2,
    1.3,
    1.4,
    1.5,
    1.6,
    1.7
  ],
  "type": "application",
  "version": "1.7"
}

Note

An application may not be immediately available after it is created. Therefore, ensure the application DNS resolves correctly before executing other REST API calls to that application.