class RestApplication

Attributes

aliases[RW]
app_url[RW]
creation_time[RW]
domain_id[RW]
embedded[RW]
framework[RW]
gear_count[RW]
gear_profile[RW]
git_url[RW]
health_check_path[RW]
name[RW]
scalable[RW]
scale_max[RW]
scale_min[RW]
ssh_url[RW]
uuid[RW]

Public Class Methods

new(app, url) click to toggle source
# File lib/stickshift-controller/app/models/rest_application.rb, line 5
def initialize(app, url)
  self.framework = app.framework
  self.name = app.name
  self.creation_time = app.creation_time
  self.uuid = app.uuid
  self.aliases = app.aliases || Array.new
  self.gear_count = (app.gears.nil?) ? 0 : app.gears.length
  self.embedded = app.embedded
  self.domain_id = app.domain.namespace
  self.gear_profile = app.node_profile
  self.scalable = app.scalable
  self.scale_min,self.scale_max = app.scaling_limits
  self.git_url = "ssh://#{@uuid}@#{@name}-#{@domain_id}.#{Rails.configuration.ss[:domain_suffix]}/~/git/#{@name}.git/"
  self.app_url = "http://#{@name}-#{@domain_id}.#{Rails.configuration.ss[:domain_suffix]}/"
  self.ssh_url = "ssh://#{@uuid}@#{@name}-#{@domain_id}.#{Rails.configuration.ss[:domain_suffix]}"
  self.health_check_path = app.health_check_path
  cart_type = "embedded"
  cache_key = "cart_list_#{cart_type}"
  
  carts = nil
  if app.scalable
    carts = Application::SCALABLE_EMBEDDED_CARTS
  else
    carts = get_cached(cache_key, :expires_in => 21600.seconds) do
      Application.get_available_cartridges("embedded")
    end
  end
  # Update carts list
  # - remove already embedded carts
  # - remove conflicting carts
  app.embedded.keys.each do |cname|
    carts -= [cname]
    cinfo = CartridgeCache.find_cartridge(cname)
    carts -= cinfo.conflicts_feature if defined?(cinfo.conflicts_feature)
  end if !app.embedded.empty?

  self.links = {
    "GET" => Link.new("Get application", "GET", URI::join(url, "domains/#{@domain_id}/applications/#{@name}")),
    "GET_DESCRIPTOR" => Link.new("Get application descriptor", "GET", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/descriptor")),      
    "GET_GEARS" => Link.new("Get application gears", "GET", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/gears")),      
    "GET_GEAR_GROUPS" => Link.new("Get application gear groups", "GET", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/gear_groups")),      
    "START" => Link.new("Start application", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "start")
    ]),
    "STOP" => Link.new("Stop application", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "stop")
    ]),      
    "RESTART" => Link.new("Restart application", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "restart")
    ]),
    "FORCE_STOP" => Link.new("Force stop application", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "force-stop")
    ]),
    "EXPOSE_PORT" => Link.new("Expose port", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "expose-port")
    ]),
    "CONCEAL_PORT" => Link.new("Conceal port", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "conceal-port")
    ]),
    "SHOW_PORT" => Link.new("Show port", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "show-port")
    ]),
    "ADD_ALIAS" => Link.new("Add application alias", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "add-alias"),
      Param.new("alias", "string", "The server alias for the application")
    ]),
    "REMOVE_ALIAS" => Link.new("Remove application alias", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "remove-alias"),
      Param.new("alias", "string", "The application alias to be removed")
    ]),
    "SCALE_UP" => Link.new("Scale up application", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "scale-up")
    ]),
    "SCALE_DOWN" => Link.new("Scale down application", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/events"), [
      Param.new("event", "string", "event", "scale-down")
    ]),
    "DELETE" => Link.new("Delete application", "DELETE", URI::join(url, "domains/#{@domain_id}/applications/#{@name}")),
    
    "ADD_CARTRIDGE" => Link.new("Add embedded cartridge", "POST", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/cartridges"),[
      Param.new("cartridge", "string", "framework-type, e.g.: mongodb-2.0", carts)
    ]),
    "LIST_CARTRIDGES" => Link.new("List embedded cartridges", "GET", URI::join(url, "domains/#{@domain_id}/applications/#{@name}/cartridges"))
  }
end

Public Instance Methods

to_xml(options={}) click to toggle source
# File lib/stickshift-controller/app/models/rest_application.rb, line 90
def to_xml(options={})
  options[:tag_name] = "application"
  super(options)
end