Name: erlang
Cartridge-Short-Name: ERL
Cartridge-Version: '0.0.1'
Display-Name: Erlang R15B
Source-Url: git://github.com/thijsterlouw/openshift-erlang.git
Description: "Erlang OTP framework for OpenShift"
Version: '15'
Versions: ['15']
License: "ASL 2.0"
License-Url: http://www.apache.org/licenses/LICENSE-2.0.txt
Cartridge-Vendor: spilgames
Vendor: http://www.erlang.org
# The Erlang cartridge is acting as a service. This cartridge does not expose itself as a
# web-service by itself; in that sense it is slightly different than most other catridges.
# OpenShift currently requires a web cartridge type. SUCKS.
Categories:
  - service
  - erlang
  - experimental
  - web_framework
Website: https://github.com/spilgames/
Cart-Data:
  - Key: OPENSHIFT_ERL_LOG_DIR
    Type: environment
    Description: "Directory to store application log files."
  - Key: OPENSHIFT_ERL_RUN_DIR
    Type: environment
    Description: "Directory to store application runtime data."
  - Key: OPENSHIFT_TMP_DIR
    Type: environment
    Description: "Directory to store application temporary files."
  - Key: OPENSHIFT_REPO_DIR
    Type: environemnt
    Description: "Application root directory where application files reside. This directory is reset every time you do a git-push"
  - Key: OPENSHIFT_ERL_PORT
    Type: environment
    Description: "Internal HTTP port to which the VM binds to."
  - Key: OPENSHIFT_ERL_CLUSTER_PORT
    Type: environment
    Description: "Internal TCP port to which the VM binds for clustering purposes."
  - Key: OPENSHIFT_ERL_CLUSTER_PROXY_PORT
    Type: environment
    Description: "External TCP port which is forwarded to OPENSHIFT_ERL_IP:OPENSHIFT_ERL_CLUSTER_PORT"
  - Key: OPENSHIFT_ERL_IP
    Type: environment
    Description: "Internal IP to which the VM binds to."
  - Key: OPENSHIFT_APP_DNS
    Type: environment
    Description: "Fully qualified domain name for the application."
  - Key: OPENSHIFT_APP_NAME
    Type: environment
    Description: "Application name"
  - Key: OPENSHIFT_DATA_DIR
    Type: environment
    Description: "Directory to store application data files. Preserved across git-pushes. Not shared across gears."
  - Key: OPENSHIFT_APP_UUID
    Type: environment
    Description: "Unique ID which identified the application. Does not change between gears."
  - Key: OPENSHIFT_GEAR_UUID
    Type: environment
    Description: "Unique ID which identified the gear. This value changes between gears."
Suggests:

Provides:
  - erl-15
  - erlang-15
  - "erlang"
  - "erlang (version) = 15"
Requires:

Conflicts:

Native-Requires:

Scaling:
  Min: 1
  Max: 100
# ERLANG-CLUSTER-INFO: this event is used to inform other gears about the existance of this gear.
#     The other gears need to know the Host, so they can find the EPMD on the new gear,
#     ask which nodes are running there and then form a network.
Publishes:
  publish-erlang-cluster:
    Type: "NET_TCP:erlang-cluster-info"
    Description: "Inform other gears about the existance of this gear"
  publish-http-url:
    Type: "NET_TCP:httpd-proxy-info"
  publish-gear-endpoint:
    Type: "NET_TCP:gear-endpoint-info"    
Subscribes:
  set-erlang-cluster:
    Type: "NET_TCP:erlang-cluster-info"
Group-Overrides:
  - components:
    - erl-15
    - web_proxy    
# CLUSTER_PROXY_PORT: Erlang distribution needs a public listening port, because Erlang Nodes
#     need to connect directly with eachother (they normally form a fully connected network).
#     The value of the private port is not important.
# Mappins is needed to prevent errors in auto-scaled instances ()
Endpoints:
  - Private-IP-Name:   IP
    Private-Port-Name: PORT
    Private-Port:      8080
    Public-Port-Name:  PROXY_PORT
    Mappings:
      - Frontend:      ""
        Backend:       ""
        Options:       { websocket: true }
      - Frontend:      "/health"
        Backend:       ""
        Options:       { health: true }
  - Private-IP-Name:   IP
    Private-Port-Name: CLUSTER_PORT
    Private-Port:      30000
    Public-Port-Name:  CLUSTER_PROXY_PORT