class Operation

Attributes

update[RW]
log[R]

Public Class Methods

new(log) click to toggle source
# File lib/satops/operator.rb, line 10
def initialize(log)
  # Family is associated operation's group class: i.e 'UsersSet' for 'Users'
  @family=Kernel.const_get(self.class.to_s+'Set')
  @log=log
  @log.info "Init #{self.class.to_s}"
end

Public Instance Methods

clone(sat, src_name, dst_name) click to toggle source
# File lib/satops/operator.rb, line 21
def clone(sat, src_name, dst_name)
  @log.info "Cloning #{self.class}"
end
create(sat) click to toggle source
# File lib/satops/operator.rb, line 17
def create(sat)
  @family.class_eval { return self.new(sat) }
end
destroy(sat) click to toggle source
# File lib/satops/operator.rb, line 25
def destroy(sat)
  @log.info "Deleting #{self.class}"
  satobjects=create(sat)
  satobjects.delete_all
end
export(type, sat, path) click to toggle source
# File lib/satops/operator.rb, line 31
def export(type, sat, path)
  @log.info "Exporting #{self.class}"

  satobjects=create(sat)
  satobjects.fetch
  case type
  when :mrb
    File.open("#{path}/#{self.class}.mrb", "w+") do |f|
      Marshal.dump(satobjects.list, f)
    end
  when :yaml
    File.open("#{path}/#{self.class}.yaml", "w+") do |f|
      YAML.dump(satobjects.list, f)
    end
  end
end
extra(src_sat, dst_sat) click to toggle source
# File lib/satops/operator.rb, line 81
def extra(src_sat, dst_sat)
  @log.info "Applying extra #{self.class}"
  src_satobjects=create(src_sat)
  src_satobjects.fetch
  dst_satobjects=create(dst_sat)
  dst_satobjects.fetch

  satobjects_extras=[]
  satobjects_extras=dst_satobjects-src_satobjects
  dst_satobjects.extra(satobjects_extras) unless satobjects_extras.empty?
end
import(type, sat, path) click to toggle source
# File lib/satops/operator.rb, line 48
def import(type, sat, path)
  @log.info "Importing #{self.class}"
  satobjects=[]
  case type
  when :mrb
    File.open("#{path}/#{self.class}.mrb") do |f|
      satobjects = Marshal.load(f)
    end
  when :yaml
    File.open("#{path}/#{self.class}.yaml") do |f|
      satobjects = YAML.load(f)
    end
  end

  dst_satobjects=create(sat)
  dst_satobjects.fetch
  unless satobjects.nil?
    satobjects.each do |satobject|
      if self.class.update && dst_satobjects.include?(satobject)
        satobject.update(sat)
      else
        satobject.create(sat)
      end
    end
  end
end
postsync(src_sat, dst_sat) click to toggle source
# File lib/satops/operator.rb, line 78
def postsync(src_sat, dst_sat)
end
presync(src_sat, dst_sat) click to toggle source
# File lib/satops/operator.rb, line 75
def presync(src_sat, dst_sat)
end
sync(src_sat, dst_sat) click to toggle source
# File lib/satops/operator.rb, line 93
def sync(src_sat, dst_sat)
  @log.info  "Synchronizing #{self.class}"
  src_satobjects=create(src_sat)
  src_satobjects.fetch
  dst_satobjects=create(dst_sat)
  dst_satobjects.fetch
  presync(src_sat, dst_sat)
  unless src_satobjects.nil?
    src_satobjects.list.each do |src_satobject|
      if self.class.update && dst_satobjects.include?(src_satobject)
        src_satobject.update(dst_sat)
      else
        src_satobject.create(dst_sat)
      end
    end
  end
  postsync(src_sat, dst_sat)
end