class OpenShift::Cartridge

Attributes

architecture[RW]
cart_data_def[RW]
categories[RW]
conflicts[RW]
default_profile[RW]
description[RW]
display_name[RW]
help_topics[RW]
license[RW]
license_url[RW]
name[RW]
native_requires[RW]
path[RW]
profiles[R]
provides[RW]
requires[RW]
suggests[RW]
suggests_feature[RW]
vendor[RW]
version[RW]
website[RW]

Public Class Methods

new() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 9
def initialize
  super
  @_profile_map = {}
  @profiles = []      
end

Public Instance Methods

components_in_profile(profile) click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 33
def components_in_profile(profile)
  profile = self.default_profile if profile.nil?
  @_profile_map[profile].components
end
features() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 15
def features
  features = self.provides.dup
  self.profiles.each do |profile|
    features += profile.provides
  end
  features.uniq
end
from_descriptor(spec_hash={}) click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 102
def from_descriptor(spec_hash={})
  self.name = spec_hash["Name"]
  self.version = spec_hash["Version"] || "0.0"
  self.architecture = spec_hash["Architecture"] || "noarch"
  self.display_name = spec_hash["Display-Name"] || "#{self.name}-#{self.version}-#{self.architecture}"
  self.license = spec_hash["License"] || "unknown"
  self.license_url = spec_hash["License-Url"] || ""
  self.vendor = spec_hash["Vendor"] || "unknown"
  self.description = spec_hash["Description"] || ""
  self.provides = spec_hash["Provides"] || []
  self.requires = spec_hash["Requires"] || []
  self.conflicts = spec_hash["Conflicts"] || []
  self.native_requires = spec_hash["Native-Requires"] || []
  self.categories = spec_hash["Categories"] || []
  self.website = spec_hash["Website"] || ""
  self.suggests = spec_hash["Suggests"] || []
  self.help_topics = spec_hash["Help-Topics"] || {}
  self.cart_data_def = spec_hash["Cart-Data"] || {}
  
  self.provides = [self.provides] if self.provides.class == String
  self.requires = [self.requires] if self.requires.class == String
  self.conflicts = [self.conflicts] if self.conflicts.class == String
  self.native_requires = [self.native_requires] if self.native_requires.class == String

  if spec_hash.has_key?("Profiles")
    spec_hash["Profiles"].each do |pname, p|
      profile = Profile.new.from_descriptor(self, p)
      profile.name = pname
      @profiles << (profile)
      @_profile_map[profile.name] = profile
    end
  else
    ["Name", "Version", "Architecture", "DisplayName", "License",
       "Provides", "Requires", "Conflicts", "Native-Requires"].each do |k|
      spec_hash.delete(k)
    end
    p = Profile.new.from_descriptor(self, spec_hash)
    p.name = self.name
    p.generated = true
    @profiles << p
    @_profile_map[p.name] = p
  end
  self.default_profile = spec_hash["Default-Profile"] || self.profiles.first.name
  self
end
get_component(component_name) click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 42
def get_component(component_name)
  profiles.each{ |p| return p.get_component(component_name) unless p.get_component(component_name).nil? }
end
get_profile_for_component(component_name) click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 46
def get_profile_for_component(component_name)
  profiles.each{ |p| return p unless p.get_component(component_name).nil? }
end
has_component?(component_name) click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 38
def has_component?(component_name)
  !get_component(component_name).nil?
end
is_ci_builder?() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 84
def is_ci_builder?
  return categories.include?('ci_builder')
end
is_ci_server?() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 80
def is_ci_server?
  return categories.include?('ci')
end
is_domain_scoped?() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 68
def is_domain_scoped?
  return categories.include?('domain_scope')
end
is_embeddable?() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 64
def is_embeddable?
  return categories.include?('embedded')
end
is_plugin?() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 56
def is_plugin?
  return categories.include?('web_proxy') || categories.include?('ci_builder') || categories.include?('plugin')
end
is_premium?() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 88
def is_premium?
  return categories.include?('premium')
end
is_service?() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 60
def is_service?
  return categories.include?('service')
end
is_web_framework?() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 76
def is_web_framework?
  return categories.include?('web_framework')
end
is_web_proxy?() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 72
def is_web_proxy?
  return categories.include?('web_proxy')
end
profile_for_feature(feature) click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 23
def profile_for_feature(feature)
  if feature.nil? || self.provides.include?(feature) || self.name == feature
    return @_profile_map[self.default_profile]
  else
    self.profiles.each do |profile|
      return profile if profile.provides.include? feature
    end
  end
end
profiles=(p) click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 50
def profiles=(p)
  @_profile_map = {}
  @profiles = p
  @profiles.each{ |profile| @_profile_map[p.name] = p }
end
to_descriptor() click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 148
def to_descriptor
  h = {
    "Name" => self.name,
    "Display-Name" => self.display_name,
  }
  
  h["Architecture"] = self.architecture if self.architecture != "noarch"
  h["Version"] = self.version if self.version != "0.0"
  h["Description"] = self.description if self.description and !self.description.empty?
  h["License"] = self.license if self.license and !self.license.empty? and self.license != "unknown"
  h["License-Url"] = self.license_url if self.license_url and !self.license_url.empty?
  h["Categories"] = self.categories if self.categories and !self.categories.empty?
  h["Website"] = self.website if self.website and !self.website.empty?
  h["Help-Topics"] = self.help_topics if self.help_topics and !self.help_topics.empty?
  h["Cart-Data"] = self.cart_data_def if self.cart_data_def and !self.cart_data_def.empty?

  h["Provides"] = self.provides if self.provides && !self.provides.empty?
  h["Requires"] = self.requires if self.requires && !self.requires.empty?
  h["Conflicts"] = self.conflicts if self.conflicts && !self.conflicts.empty?
  h["Suggests"] = self.suggests if self.suggests && !self.suggests.empty? 
  h["Native-Requires"] = self.native_requires if self.native_requires && !self.native_requires.empty?
  h["Vendor"] = self.vendor if self.vendor and !self.vendor.empty? and self.vendor != "unknown"
  h["Default-Profile"] = self.default_profile if !self.default_profile.nil? and !self.default_profile.empty? and !@_profile_map[@default_profile].generated

  if self.profiles.length == 1 && self.profiles.first.generated
    profile_h = self.profiles.first.to_descriptor
    profile_h.delete("Name")
    h.merge!(profile_h)
  else
    h["Profiles"] = {}
    self.profiles.each do |v|
      h["Profiles"][v.name] = v.to_descriptor
    end
  end
  
  h
end
usage_rate(currency) click to toggle source
# File lib/openshift-origin-common/models/cartridge.rb, line 92
def usage_rate(currency)
  rate = 0
  if self.is_premium?
    data = {:cart => self.name}
    self.class.notify_observers(:get_cart_usage_rate, data)
    rate = data[:rate][currency] if data[:rate]
  end
  rate
end