Class: OpenShift::Cartridge
- Defined in:
- lib/openshift-origin-common/models/cartridge.rb
Instance Attribute Summary collapse
-
#architecture ⇒ Object
Returns the value of attribute architecture.
-
#cart_data_def ⇒ Object
Returns the value of attribute cart_data_def.
-
#categories ⇒ Object
Returns the value of attribute categories.
-
#conflicts_feature ⇒ Object
Returns the value of attribute conflicts_feature.
-
#default_profile ⇒ Object
Returns the value of attribute default_profile.
-
#description ⇒ Object
Returns the value of attribute description.
-
#display_name ⇒ Object
Returns the value of attribute display_name.
-
#help_topics ⇒ Object
Returns the value of attribute help_topics.
-
#license ⇒ Object
Returns the value of attribute license.
-
#license_url ⇒ Object
Returns the value of attribute license_url.
-
#name ⇒ Object
Returns the value of attribute name.
-
#path ⇒ Object
Returns the value of attribute path.
-
#profile_name_map ⇒ Object
Returns the value of attribute profile_name_map.
-
#provides_feature ⇒ Object
Returns the value of attribute provides_feature.
-
#requires ⇒ Object
Returns the value of attribute requires.
-
#requires_feature ⇒ Object
Returns the value of attribute requires_feature.
-
#suggests_feature ⇒ Object
Returns the value of attribute suggests_feature.
-
#vendor ⇒ Object
Returns the value of attribute vendor.
-
#version ⇒ Object
Returns the value of attribute version.
-
#website ⇒ Object
Returns the value of attribute website.
Instance Method Summary collapse
- #add_profile(profile) ⇒ Object
- #all_capabilities ⇒ Object
-
#find_profile(capability) ⇒ Object
Search for a profile that provides specified capabilities.
- #from_descriptor(spec_hash = {}) ⇒ Object
- #get_name_prefix ⇒ Object
-
#initialize ⇒ Cartridge
constructor
A new instance of Cartridge.
- #profiles(name = nil) ⇒ Object
- #profiles=(data) ⇒ Object
- #to_descriptor ⇒ Object
Methods inherited from UserModel
#delete, find, find_all, find_by_uuid, #save
Methods inherited from Model
attr_accessor, attr_reader, attr_writer, #attributes, #attributes=, #deleted?, exclude_attributes, excludes_attributes, gen_uuid, include_attributes, includes_attributes, #new_record?, #persisted?, primary_key, require_update_attributes, requires_update_attributes, #reset_state, #to_xml
Constructor Details
#initialize ⇒ Cartridge
Returns a new instance of Cartridge.
10 11 12 13 14 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 10 def initialize super self.from_descriptor({"Name" => "unknown-cartridge"}) self.profile_name_map = {} end |
Instance Attribute Details
#architecture ⇒ Object
Returns the value of attribute architecture.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def architecture @architecture end |
#cart_data_def ⇒ Object
Returns the value of attribute cart_data_def.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def cart_data_def @cart_data_def end |
#categories ⇒ Object
Returns the value of attribute categories.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def categories @categories end |
#conflicts_feature ⇒ Object
Returns the value of attribute conflicts_feature.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def conflicts_feature @conflicts_feature end |
#default_profile ⇒ Object
Returns the value of attribute default_profile.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def default_profile @default_profile end |
#description ⇒ Object
Returns the value of attribute description.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def description @description end |
#display_name ⇒ Object
Returns the value of attribute display_name.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def display_name @display_name end |
#help_topics ⇒ Object
Returns the value of attribute help_topics.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def help_topics @help_topics end |
#license ⇒ Object
Returns the value of attribute license.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def license @license end |
#license_url ⇒ Object
Returns the value of attribute license_url.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def license_url @license_url end |
#name ⇒ Object
Returns the value of attribute name.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def name @name end |
#path ⇒ Object
Returns the value of attribute path.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def path @path end |
#profile_name_map ⇒ Object
Returns the value of attribute profile_name_map.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def profile_name_map @profile_name_map end |
#provides_feature ⇒ Object
Returns the value of attribute provides_feature.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def provides_feature @provides_feature end |
#requires ⇒ Object
Returns the value of attribute requires.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def requires @requires end |
#requires_feature ⇒ Object
Returns the value of attribute requires_feature.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def requires_feature @requires_feature end |
#suggests_feature ⇒ Object
Returns the value of attribute suggests_feature.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def suggests_feature @suggests_feature end |
#vendor ⇒ Object
Returns the value of attribute vendor.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def vendor @vendor end |
#version ⇒ Object
Returns the value of attribute version.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def version @version end |
#website ⇒ Object
Returns the value of attribute website.
3 4 5 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 3 def website @website end |
Instance Method Details
#add_profile(profile) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 39 def add_profile(profile) profile_name_map_will_change! profiles_will_change! @profile_name_map = {} if @profile_name_map.nil? if profile.class == Profile @profile_name_map[profile.name] = profile else key = profile["name"] @profile_name_map[key] = Profile.new @profile_name_map[key].attributes=profile end end |
#all_capabilities ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 16 def all_capabilities caps = self.provides_feature.dup self.profiles.each do |v| caps += v.provides end caps.uniq end |
#find_profile(capability) ⇒ Object
Search for a profile that provides specified capabilities
53 54 55 56 57 58 59 60 61 62 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 53 def find_profile(capability) if capability.nil? || self.provides_feature.include?(capability) return @profile_name_map[self.default_profile] end self.profiles.each do |p| return p if p.provides.include? capability end nil end |
#from_descriptor(spec_hash = {}) ⇒ Object
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 64 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_feature = spec_hash["Provides"] || [] self.requires_feature = spec_hash["Requires"] || [] self.conflicts_feature = spec_hash["Conflicts"] || [] self.requires = spec_hash["Native-Requires"] || [] self.categories = spec_hash["Categories"] || ["cartridge"] self.website = spec_hash["Website"] || "" self.suggests_feature = spec_hash["Suggests"] || [] self.help_topics = spec_hash["Help-Topics"] || {} self.cart_data_def = spec_hash["Cart-Data"] || {} self.provides_feature = [self.provides_feature] if self.provides_feature.class == String self.requires_feature = [self.requires_feature] if self.requires_feature.class == String self.conflicts_feature = [self.conflicts_feature] if self.conflicts_feature.class == String self.requires = [self.requires] if self.requires.class == String if spec_hash.has_key?("Profiles") spec_hash["Profiles"].each do |pname, p| profile = Profile.new.from_descriptor(p) profile.name = pname add_profile(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(spec_hash) p.name = "default" p.generated = true add_profile(p) end self.default_profile = spec_hash["Default-Profile"] || self.profiles.first.name self end |
#get_name_prefix ⇒ Object
147 148 149 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 147 def get_name_prefix return "/cart-" + self.name end |
#profiles(name = nil) ⇒ Object
30 31 32 33 34 35 36 37 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 30 def profiles(name=nil) @profile_name_map = {} if @profile_name_map.nil? if name.nil? @profile_name_map.values else @profile_name_map[name] end end |
#profiles=(data) ⇒ Object
24 25 26 27 28 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 24 def profiles=(data) data.each do |value| add_profile(value) end end |
#to_descriptor ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 |
# File 'lib/openshift-origin-common/models/cartridge.rb', line 108 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_feature if self.provides_feature && !self.provides_feature.empty? h["Requires"] = self.requires_feature if self.requires_feature && !self.requires_feature.empty? h["Conflicts"] = self.conflicts_feature if self.conflicts_feature && !self.conflicts_feature.empty? h["Suggests"] = self.suggests_feature if self.suggests_feature && !self.suggests_feature.empty? h["Native-Requires"] = self.requires if self.requires && !self.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.profile_name_map && !self.profile_name_map[self.default_profile].nil? && !self.profile_name_map[self.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 |