module Pulp::Common::Lifecycle::ClassMethods

Public Instance Methods

has_collection(options={}) click to toggle source

optional features

# File lib/pulp/common/lifecycle.rb, line 83
def has_collection(options={})
  
  instance_eval %{ def all
    base_get('').collect {|e| self.new(e) }
  end}
  
  options[:all_filters] && options[:all_filters].each do |filter|
    instance_eval %{
      def find_by_#{filter}(f)
        base_get('',nil,{ :#{filter} => f }).collect {|e| self.new(e) }
      end}
  end
end
has_create() click to toggle source
# File lib/pulp/common/lifecycle.rb, line 109
def has_create
  include Pulp::Common::Lifecycle::Create
end
has_crud(options={}) click to toggle source
# File lib/pulp/common/lifecycle.rb, line 97
def has_crud(options={})
  has_collection(options[:collection]||{})
  has_create
  has_get
  has_update
  has_delete
end
has_delete() click to toggle source
# File lib/pulp/common/lifecycle.rb, line 105
def has_delete
  include Pulp::Common::Lifecycle::Delete
end
has_get() click to toggle source
# File lib/pulp/common/lifecycle.rb, line 113
def has_get
  include Pulp::Common::Lifecycle::Get
end
has_update() click to toggle source
# File lib/pulp/common/lifecycle.rb, line 117
def has_update
  include Pulp::Common::Lifecycle::Update
end
locked_fields() click to toggle source
# File lib/pulp/common/lifecycle.rb, line 160
def locked_fields
  @locked_fields ||= []
end
pulp_action(action_name, options={}) click to toggle source
# File lib/pulp/common/lifecycle.rb, line 121
def pulp_action(action_name, options={})
  options[:method] ||= :post
  options[:params] = true if options[:params].nil?
  # default is true
  slash = (options[:append_slash].nil? || options[:append_slash]) ? '/' : '' 
  if options[:returns]
    module_eval %{
    def #{action_name}(#{"params#{"={}" if options[:params] == :optional}" if options[:params]})
      #{options[:returns]}.new(self.class.base_#{(options[:parse] == false) ? 'unparsed_' : '' }#{options[:method]}('#{action_name}#{slash}',self.id,#{options[:params] ? 'params' : 'nil' }))
    end}
  else
    module_eval %{
    def #{action_name}(#{"params#{"={}" if options[:params] == :optional}" if options[:params]})
      self.class.base_#{(options[:parse] == false) ? 'unparsed_' : '' }#{options[:method]}('#{action_name}#{slash}',self.id,#{options[:params] ? 'params' : 'nil' })
    end}
  end
  if options[:task_list]
    module_eval %{
      def #{action_name}_tasks
        self.class.base_get('#{action_name}#{slash}',self.id).collect{|p| Pulp::Task.new(p) }
      end}
  end
end
pulp_deferred_field(field,options={}) click to toggle source
# File lib/pulp/common/lifecycle.rb, line 43
def pulp_deferred_field(field,options={})
  if options[:array]
    module_eval("def #{field}() self.class.plain_get(fields['#{field}']).collect{|p| #{options[:array]}.new(p) }; end")
  elsif options[:returns] == :plain
    module_eval("def #{field}() self.class.plain_base.connection[fields['#{field}'].sub(/^\\/pulp\\/api\\//,'')].get; end")
  elsif options[:returns]
    module_eval("def #{field}() (res = self.class.plain_get(fields['#{field}'])).empty? ? nil : #{options[:returns]}.new(res); end")
  else
    module_eval("def #{field}() self.class.plain_get(fields['#{field}']); end")
  end
  module_eval("def #{field}_link() fields['#{field}']; end")
end
pulp_deferred_fields(*fields) click to toggle source

Declare many deffered fields at once.

# File lib/pulp/common/lifecycle.rb, line 57
def pulp_deferred_fields(*fields)
  [*fields].each {|field| pulp_deferred_field(field) }
end
pulp_field(field,options={}) click to toggle source

Allows for dynamically declaring fields that will come from Pulp.

# File lib/pulp/common/lifecycle.rb, line 29
def pulp_field(field,options={})
  locked_fields << field if options[:locked]

  module_eval("def #{field}() user_fields['#{field}'] || fields['#{field}']; end")
  module_eval("def #{field}=(val) user_fields['#{field}'] = val; end") unless options[:locked]
  
  record_fields[field] = options
end
pulp_fields(*fields) click to toggle source

Declare many fields at once.

# File lib/pulp/common/lifecycle.rb, line 39
def pulp_fields(*fields)
  fields.to_a.each {|field| pulp_field(field) }
end
pulp_locked_field(field,options={}) click to toggle source

declare a field that is locked

# File lib/pulp/common/lifecycle.rb, line 62
def pulp_locked_field(field,options={})
  pulp_field field, options.merge(:locked => true)
end
pulp_locked_fields(*fields) click to toggle source

Declare many locked fields at once.

# File lib/pulp/common/lifecycle.rb, line 67
def pulp_locked_fields(*fields)
  [*fields].each {|field| pulp_locked_field(field) }
end
pulp_special_field(field,options={}) click to toggle source

special fields are locked and registered as being special

# File lib/pulp/common/lifecycle.rb, line 72
def pulp_special_field(field,options={})
  pulp_locked_field(field,options)
  special_fields << field
end
pulp_special_fields(*fields) click to toggle source

Declare multiple special fields at once

# File lib/pulp/common/lifecycle.rb, line 78
def pulp_special_fields(*fields)
  [*fields].each{|f| pulp_special_field(f) }
end
pulp_update_action(action_name,options) click to toggle source
# File lib/pulp/common/lifecycle.rb, line 145
def pulp_update_action(action_name,options)
  module_eval %{
    def update_#{action_name}(#{[*options[:params]].join(', ')})
      self.class.base_put('',self.id,{ #{[*options[:params]].collect{|p| ":#{p} => #{p}" }.join(', ')} })
    end}
end
record_fields() click to toggle source
# File lib/pulp/common/lifecycle.rb, line 156
def record_fields
  @record_fields ||= {}
end
special_fields() click to toggle source
# File lib/pulp/common/lifecycle.rb, line 152
def special_fields
  @special_fields ||= []
end